安全地共享对象
- 前面几节讲的都是如何确保对象不被发布。但是在某些情况下我们希望在多个线程间共享对象,此时必须确保安全地进行共享
- 可变对象必须通过安全的方式来发布
- 要安全地发布一个对象,对象的引用以及对象的状态必须同时对其他线程可见,一个正确构造的对象可以通过以下几种的方式来安全发布
- 这个例子是一个不安全的发布,由于存在可见性问题,其他线程看到Holder对象处于不一致的状态
// 不安全的发布 public Holder holder; public void initialize() { holder = new Holder(42); }