不要在构造器中将this对象发布出去
在构造器中启动了一个线程,则隐蔽的将this逸出给了该线程,但实际上该对象还没有完全构造成功。这种情况称为逸出(在一个对象还没有完全构造完毕前就将其发布出去)。
public class Escape {
int i;
public Escape() {
// TODO Auto-generated constructor stub
new Thread (){
public void run() {
print();
};
}.start();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
i=2;
}
public void print(){
System.out.println(i);
}
public static void main(String[] args) {
new Escape();
}
}
在构造器中启动了一个线程,则隐蔽的将this逸出给了该线程,但实际上该对象还没有完全构造成功。这种情况称为逸出(在一个对象还没有完全构造完毕前就将其发布出去)。