什么时候应该在Java中扩展Thread?

时间:2015-04-25 15:15:37

标签: java multithreading runnable

我知道多线程的基础知识。此外,我在Jon Skeet先生"implements Runnable" vs. "extends Thread"中提到了这个答案。

他说:

  

你并不专注于线程的行为。你只是   给它一些东西来运行。 (因此使用Runnable而不是Thread)

所以我的问题是:

在什么情况下人们会专注一个帖子?

什么时候应该用Java扩展Thread?

我希望通过示例和代码得到答案。

谢谢!

3 个答案:

答案 0 :(得分:1)

Runnable视为执行任务,将Thread视为执行者。如果要向执行程序添加某些特定行为,则应扩展Thread,例如,可能控制其生命周期,修改状态等。可以在{{1}中找到从Thread派生的类的示例(看看here),JDK(看看here)。

答案 1 :(得分:0)

一种可能的情况是
如果您的班级是子班级,即在这种情况下拥有超类您无法扩展线程,则必须实施Runnable接口   如果类不是子类,则可以扩展Thread类。

答案 2 :(得分:-1)

我能想到的一件事:如果你想拥有多个线程,默认情况下会有多个线程。具体名称或优先级,您可以扩展Thread

public class MyThread extends Thread {

    public MyThread() {
        super("MyThread");
        setPriority(Thread.MIN_PRIORITY);
    }

    @Override
    public void run() {
        // something
    }
}

或者,如果您想要进行与Thread对象本身相关的更多操作。通常,除了实现Runnable之外,您不需要执行任何其他操作,并使用将其作为参数的构造函数创建Thread