public class Escape {
private Integer thisCanBeEscape = 0;
public Escape () {
new InnerClass();
thisCanBeEscape = null;
}
//内部类构造方法调用外部类的私有域
private class InnerClass {
public InnerClass() {
log.info("{}", Escape.this.thisCanBeEscape);
}
}
public static void main(String[] args) {
new Escape();
}
}
对这段代码的分析有那么一句话不是太懂,‘上述代码在函数构造过程中启动了一个线程。无论是隐式的启动还是显式的启动,都会造成这个this引用的溢出。新线程总会在所属对象构造完毕之前就已经看到它了’ 这句话里的 ‘函数构造过程中启动了一个线程’ 这个线程是主线程嘛 代码里我没看到其他的线程了