来自 Java concurrency in practice 一书:
为了安全地发布对象,对象的引用和对象的状态必须同时对其他线程可见。正确构造的对象可以通过以下方式安全地发布:
从静态初始化器初始化对象引用
将对它的引用存储到 volatile 字段或 AtomicReference
将对它的引用存储到正确构造的对象的最终字段中
将对它的引用存储到由
锁正确保护的字段中。
我的问题是:
- 要点 2 和 3 之间有什么区别?我对安全发布对象方面的
volatile
方法和方法之间的区别感兴趣。final
- 他在第 3 点中正确构造对象的最终字段是什么意思?在开始项目符号点之前,作者已经提到他们正在谈论一个正确构造的对象(我假设它不会让
this
引用 escape )。但是为什么他们又一次提到了正确构造的对象?