什么时候应该在Java中扩展线程?
我知道多线程的基础知识。此外,我提到了Jon Skeet先生的这一答复 他在这里说: 您并不是真正专门研究线程的行为。你只是 让它跑起来。(因此使用Runnable而不是Thread) 所以我的问题是: 在哪种情况下,一个人会专门处理一个线程? 什么时候应该在Java中扩展线程? 如果能给我一个例子和代码的答案,我将不胜感激什么时候应该在Java中扩展线程?,java,multithreading,runnable,Java,Multithreading,Runnable,我知道多线程的基础知识。此外,我提到了Jon Skeet先生的这一答复 他在这里说: 您并不是真正专门研究线程的行为。你只是 让它跑起来。(因此使用Runnable而不是Thread) 所以我的问题是: 在哪种情况下,一个人会专门处理一个线程? 什么时候应该在Java中扩展线程? 如果能给我一个例子和代码的答案,我将不胜感激 谢谢 将Runnable视为要执行的任务,将线程视为执行者。如果你想给executor添加一些特定的行为,比如,控制它的生命周期,修改状态等等,你应该扩展Thread。你可
谢谢 将
Runnable
视为要执行的任务,将线程
视为执行者。如果你想给executor添加一些特定的行为,比如,控制它的生命周期,修改状态等等,你应该扩展Thread
。你可以在JDK
中找到一个从Thread
派生的类的例子(看一看),Android SDK
(看一看).一种可能的情况是
当您的类是childclass时,即具有超类,在这种情况下您不能扩展线程,您必须实现可运行接口
如果类不是子类,则可以扩展Thread类 我能想到的一件事是:如果您想要有多个线程,默认情况下,这些线程会有一个特定的名称或优先级,那么您可以扩展
Thread
public class MyThread extends Thread {
public MyThread() {
super("MyThread");
setPriority(Thread.MIN_PRIORITY);
}
@Override
public void run() {
// something
}
}
或者,如果要执行更多与
线程
对象本身相关的操作。通常,除了实现Runnable
并使用将其作为参数的构造函数创建线程
之外,您不需要做任何其他事情。我没有否决它,但如果您需要其他默认值,您可以创建一个工厂方法,而不是创建一个子类。@JimmyT。是的,或者只是使用一些执行器
。这只是可以做的一件事。