对象的逸出

不要在构造器中将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逸出给了该线程,但实际上该对象还没有完全构造成功。这种情况称为逸出(在一个对象还没有完全构造完毕前就将其发布出去)。

你可能感兴趣的:(编程技巧)