为什么有人会使用Java Thread无参数构造函数?

时间:2011-09-27 16:30:07

标签: java multithreading

在什么情况下,任何人都会使用Java Thread类的无参数构造函数? API说:

  

此构造函数与Thread(null,null,gname)具有相同的效果,   其中gname是新生成的名称。

如果我错了,请纠正我,但我认为在实例化新的Thread对象后,无法修改线程的目标。如果目标等于null,那么start方法将无效吗?

为什么要使用这个构造函数?

4 个答案:

答案 0 :(得分:6)

首先,它允许您在没有显式调用超类构造函数的PITA的情况下创建子类,例如

new Thread(){ 
   public void run() { ... }
}.start();

答案 1 :(得分:4)

如果你创建一个(可能是匿名的)继承Thread并覆盖run的类,你的类需要调用这个基础构造函数。

答案 2 :(得分:0)

如果从Thread继承,你当然可以使用Thread的no-arg构造函数。

答案 3 :(得分:0)

只是为了添加其他答案,这是Java的Thread#run()

的实现
public void run() {
   if (target != null) {
      target.run();
   }
}

因此,您可以通过向Runnable构造函数提供Thread,将其分配给target,或者通过覆盖此方法,从而实现两种方式之一的效果在子类中。如果两者都没有,则对run()的调用无效。