据说不应该在构造函数中启动线程,但我不确定this
引用如何在这种情况下转义Test
构造函数。我查看了底层的Thread.java,我无法弄清楚这一点。
class Test {
static MyThread thread;
public Test() {
thread = new MyThread();
thread.start();
}
}
class MyThread extends Thread {
public void run() {
//do stuff
}
}
感谢您的帮助。
thread = new MyThread();
会调用Thread
超级构造函数:
public Thread() {
init(null, null, "Thread-" + nextThreadNum(), 0);
}
我没有看到参考文献的消失。
答案 0 :(得分:5)
this
只有在线程引用this
时才会转义(例如,如果它是内部类)
您的帖子未引用this
,因此这不是问题。
然而,通常期望构建对象是无副作用的;这不是一个好主意。