在什么情况下,任何人都会使用Java Thread类的无参数构造函数? API说:
此构造函数与Thread(null,null,gname)具有相同的效果, 其中gname是新生成的名称。
如果我错了,请纠正我,但我认为在实例化新的Thread对象后,无法修改线程的目标。如果目标等于null,那么start方法将无效吗?
为什么要使用这个构造函数?
答案 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()
的调用无效。