使用通过扩展Thread类来创建Thread

时间:2012-06-17 18:17:19

标签: java runnable

  

可能重复:
  Java: “implements Runnable” vs. “extends Thread”

Java提供了两个创建Thread类的选项,即通过实现Runnable或扩展Thread类。

我知道可以有很多理由来实现Runnable但不确定将Thread类扩展为创建自己的Thread类的场景?

请您提供一些方案,其中扩展Thread似乎是可行的或更好的选择或有利......

有一个 线程Question,但没有回答我的问题

2 个答案:

答案 0 :(得分:2)

几乎没有理由扩展Thread,基本上你想要扩展线程的唯一原因是你要覆盖run()以外的东西,这通常是个坏主意。扩展Thread不常见的原因是因为那时类不能扩展其他任何东西,如果你只是重写run()方法,那么扩展Thread并没有实现Runnable是没有意义的。

答案 1 :(得分:0)

Runnable是一个只有一个方法run()的接口,需要由实现接口的类实现。

e.g。

public class MyRunnable implements Runnable {
    @Override
    public void run() {
        //...
    }
}

MyRunnable不是Thread也不能仅使用该类创建新线程。所以,说 -

是没有意义的
  

Java提供了两个创建Thread类的选项,即通过实现Runnable ...

你可以扩展Thread课程,但就像@John所说的那样没有任何意义。

但是如果你想在新线程中执行一些代码,那么以下是最好的方法 -

MyRunnable r = new MyRunnable();
Thread t = new Thread(r);
t.start();

t.start()方法启动一个新线程并在run()上调用r方法(MyRunnable的实例。