0

据说线程不应该在构造函数中启动,但我不确定在这种情况下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);
}

我没有看到参考消失。

4

1 回答 1

5

this只能在线程引用时转义this(例如,如果它是内部类)

您的线程没有引用this,所以这不是问题。

但是,通常期望构造一个对象是没有副作用的;这不是一个好主意。

于 2013-01-22T15:07:04.063 回答