我知道多线程的基础知识。此外,我提到了Jon Skeet先生的答案"实现Runnable"与"扩展线程"。
他说:
你并没有真正专注于线程的行为。你只是 给它一些东西来运行。(所以使用Runnable而不是Thread)
所以我的问题是:
在什么情况下,人们会专门处理线程?
什么时候应该在 Java 中扩展 Thread?
我希望得到带有示例和代码的答案。
谢谢!!
Runnable
视为要执行的任务,将Thread
视为执行器。如果要向执行器添加一些特定行为,例如,可能控制其生命周期,修改状态等,则应扩展Thread
。派生自Thread
的类示例,您可以在JDK
(查看此处)Android SDK
(查看此处)中找到。
一种可能的情况是
当你的类是子类时,即在这种情况下有超类,你不能扩展线程,你必须实现 Runnable 接口 如果类不是子类,则可以扩展 Thread 类。
我能想到的一件事:如果你想有多个线程,默认情况下会有一个特定的名称或优先级,你可以扩展Thread
。
public class MyThread extends Thread {
public MyThread() {
super("MyThread");
setPriority(Thread.MIN_PRIORITY);
}
@Override
public void run() {
// something
}
}
或者,如果要执行与Thread
对象本身相关的更多操作。通常,除了实现Runnable
并使用将其作为参数的构造函数创建Thread
之外,您不需要执行任何其他操作。