Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.Thread类的以下构造函数之间有什么区别_Java_Multithreading - Fatal编程技术网

java.lang.Thread类的以下构造函数之间有什么区别

java.lang.Thread类的以下构造函数之间有什么区别,java,multithreading,Java,Multithreading,1.新线程(可运行目标) 2.新螺纹() 我得到了第一个,但是第二个的要点是什么,它在哪个类上启动线程?第一个构造函数允许您传递实现Runnable的任何类,该类允许您重写该类中的run方法 如果使用第二个构造函数创建线程,则可以通过以下方式直接重写run方法: new Thread(){ @Override public void run() { } }; 第二个构造函数用于子类化线程,可以是匿名的(参见@Jean François Savard的答案),也可以像往

1.新线程(可运行目标)

2.新螺纹()


我得到了第一个,但是第二个的要点是什么,它在哪个类上启动线程?

第一个构造函数允许您传递实现
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不客气。谢谢你的礼貌,谢谢你,伙计。你真是个了不起的家伙