java.lang.Thread类的以下构造函数之间有什么区别
1.新线程(可运行目标) 2.新螺纹()java.lang.Thread类的以下构造函数之间有什么区别,java,multithreading,Java,Multithreading,1.新线程(可运行目标) 2.新螺纹() 我得到了第一个,但是第二个的要点是什么,它在哪个类上启动线程?第一个构造函数允许您传递实现Runnable的任何类,该类允许您重写该类中的run方法 如果使用第二个构造函数创建线程,则可以通过以下方式直接重写run方法: new Thread(){ @Override public void run() { } }; 第二个构造函数用于子类化线程,可以是匿名的(参见@Jean François Savard的答案),也可以像往
我得到了第一个,但是第二个的要点是什么,它在哪个类上启动线程?第一个构造函数允许您传递实现
Runnable
的任何类,该类允许您重写该类中的run
方法
如果使用第二个构造函数创建线程,则可以通过以下方式直接重写run方法:
new Thread(){
@Override
public void run()
{
}
};
第二个构造函数用于子类化
线程
,可以是匿名的(参见@Jean François Savard的答案),也可以像往常一样:
class YourThread extends Thread {
YourThread() {
// implicit super()
}
@Override
public void run() {
// your thread code
}
}
看看javadoc:如果您选择扩展线程,您可以直接重写线程的run方法,而不需要向它传递Runnable命令。@immibis:当然可以。你搞定了,伙计。谢谢。与扩展Thread类相比,我们必须始终实现Runnable接口,因为如果使用extends,该类将无法再扩展更多的类,这也是真的吗?@Pretorious正确。@Pretorious继续,如果您只需要动态创建一个线程,您知道run方法的行为不会被重复使用,那么只需使用第二个构造函数。如果您想重新定义自己的Runnable实现,那么您需要创建一个实现
Runnable
的类,从而使用这个类和第一个构造函数创建线程。@Pretorious它是@Jean FrançoisSavard:谢谢。你总是提供很好的答案。我真的很感谢你的帮助。@Pretorious不客气。谢谢你的礼貌,谢谢你,伙计。你真是个了不起的家伙