不可变对象
- 对象在创建后其状态就不能被改变,称为不可变对象
- 对象的状态不会改变,那同步的问题和复杂性也就消失了
- 简单,只有一种状态,是由构造函数来控制的
- 安全,不会被恶意破坏,可安全的共享和发布
不可变对象必须满足的条件:
- 对象创建后其状态就不能修改
- 对象的所有域都是final类型的
- 对象是正确创建的(创建期间,this引用没有逸出)
事实不可变对象(Effectively Immutable Objects)
- 对象从技术上来看是可变的,但其状态在发布后不会再改变,这种对象称为“事实不可变对象”
- 在没有额外的同步的情况下,任何线程都可以安全地使用被安全发布的事实不可变对象