我知道多线程的基础知识。此外,我在Jon Skeet先生"implements Runnable" vs. "extends Thread"中提到了这个答案。
他说:
你并不专注于线程的行为。你只是 给它一些东西来运行。 (因此使用Runnable而不是Thread)
所以我的问题是:
在什么情况下人们会专注一个帖子?
什么时候应该用Java扩展Thread?
我希望通过示例和代码得到答案。
谢谢!
答案 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
。