据说线程永远不应该在构造函数中启动,但我不确定在这种情况下 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
super 构造函数:
public Thread() {
init(null, null, "Thread-" + nextThreadNum(), 0);
}
我没有看到任何引用文献消失。
最佳答案
this
仅当线程引用 this
时才能转义(例如,如果它是内部类)
您的线程没有引用this
,因此这不是问题。
然而,构造一个对象通常应该是没有副作用的;这不是一个好主意。
关于java - 在构造函数中启动线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14461626/