“发布(Publish)”一个对象的意思是指,使对象能够在当前作用域之外的代码中使用。将一个指向该对象的引用保存到其他代码可以访问到的地方,或者在某一个非私有的方法中返回该引用。什么意思呢?看下面的程序实例:
public static Set<Sercret> knownSercrets;
public void initialize(){
knownSercrets = new HashSet<Secret>();
}
这就是发布一个对象。很显然这会存在线程安全问题。比如:如果在对象构造完成之前就发布该对象,就会破坏线程安全性。
当某个不应该发布的对象被发布时,这种情况被称为逸出(Escape)。
原文:http://www.cnblogs.com/zxCoding/p/5222162.html