对象的发布与逸出

“发布(Publish)“一个对象是指使对象能够在当前作用域之外的代码中使用。可以通过公有静态变量,非私有方法,构造方法内隐含引用三种方式。如果对象构造完成之前就发布该对象,就会破坏线程安全性。

当某个不应该发布的对象被发布时,这种情况就被称为逸出(Escape)

不要在构造过程中使用this引用逸出

发布对象的方式:

  1. 将对象的引用存储到公共静态域中。
  2. 从非私有方法中返回引用。
  3. 将一个对象传递给外部方法,相当于发布这个对象了。
  4. 发布一个内部类实例。内引类实例包装了对封装类实例的隐含引用

对象的安全发布

要安全发布一个静态构造的对象,最简单和最安全的方式是使用静态初始化器:

public static Holder holder = new Holder(42);

results matching ""

    No results matching ""