Runnable和Thread的区别,以及如何调用start()方法

RunnableThread都是Java多线程编程中的核心概念,它们之间存在以下主要差异:

  1. Runnable是一个接口,而Thread是一个类。这意味着我们可以通过实现Runnable接口来创建线程,或者直接继承Thread类并重写其方法。
  2. Runnable只包含一个run方法,这是线程的主体部分。当我们想要创建一个新线程时,需要实例化一个Runnable对象并将其传入Thread的构造函数中。相比之下,Thread类可以直接调用其run方法。
  3. 从语法和结构上看,使用Runnable接口的方式更为灵活和推荐,因为Java不支持多重继承,但可以实现多个接口。通过实现Runnable接口并传递给Thread类,我们可以更容易地共享和管理线程代码。
  4. 在实际应用中,当一个类已经继承了另一个类(例如自定义的视图类或其他框架中的类),那么这个类就不能再继承Thread类。但是,它可以实现Runnable接口并通过其他方式创建线程。

 

RunnableThread都需要调用start()方法来启动线程。

对于Runnable接口,我们需要创建一个实现该接口的类,并重写其run()方法。然后,我们可以创建一个新的Thread对象,将实现了Runnable接口的类的实例作为参数传递给它,最后调用start()方法来启动线程。

class MyRunnable implements Runnable {
    @Override
    public void run() {
        // 线程主体部分的代码
    }
}

public class Main {
    public static void main(String[] args) {
        MyRunnable myRunnable = new MyRunnable();
        Thread thread = new Thread(myRunnable);
        thread.start(); // 启动线程
    }
}

对于Thread类,我们可以直接继承它并重写其run()方法。然后,我们可以创建一个新的Thread对象(即子类的对象),最后调用start()方法来启动线程。示例代码如下:

class MyThread extends Thread {
    @Override
    public void run() {
        // 线程主体部分的代码
    }
}

public class Main {
    public static void main(String[] args) {
        MyThread myThread = new MyThread();
        myThread.start(); // 启动线程
    }
}

 

 

你可能感兴趣的:(Java碧血指南,java,开发语言)