ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 对象的发布与逸出 “发布(Publish)“一个对象是指使对象能够在当前作用域之外的代码中使用。可以通过公有静态变量,非私有方法,构造方法内隐含引用三种方式。如果对象构造完成之前就发布该对象,就会破坏线程安全性。 当某个不应该发布的对象被发布时,这种情况就被称为逸出(Escape) > 不要在构造过程中使用this引用逸出 发布对象的方式: 1. 将对象的引用存储到公共静态域中。 2. 从非私有方法中返回引用。 3. 将一个对象传递给外部方法,相当于发布这个对象了。 4. 发布一个内部类实例。内引类实例包装了对封装类实例的隐含引用 #### 对象的安全发布 ![](https://img.kancloud.cn/38/24/38244bef54e2ab309ebc7145e1d7c0f4_460x92.png) 要安全发布一个静态构造的对象,最简单和最安全的方式是使用静态初始化器: ``` public static Holder holder = new Holder(42); ```