-
Java中的三种对象
- 不变对象
- 基本不变对象
- 可变对象
-
对象安全构造
- 何为对象安全构造?
-
怎样达到目的?
- 在对象构造期间,不要公布this引用
- 不要隐式地暴露“this”引用
- 不要从构造函数内启动线程
-
对象安全发布
-
何为对象安全发布?
- 确保对象引用和状态对其他线程正确可见
-
安全发布技术
- 静态初始化器初始化对象引用
- 将引用存储到volatile域
- 将引用存储到正确创建对象的final域
- 将引用存储到由锁正确保护的域
-
三种对象安全发布方式
- 不变对象:任何机制
- 基本不变对象:安全发布
- 可变对象:安全发布+状态正确改变(锁)