对象的组合¶
1.设计线程安全的类¶
再设计线程安全类的过程中,需要包含以下三个基本要素:
- 找出构成对象状态的所有变量。
- 找出约束状态变量的不变性条件。
- 建立对象状态的并发访问管理策略。
1.1. 收集同步需求¶
- 不变性条件,使用==final==
- 后验性条件,使用==锁和封装==
如果不了解对象的不变性条件与后验条件,那么就不能确保线程的安全性。要满足在状态变量的有效值或状态转换上的各种约束条件,就需要借助与==原子性==和==封装性==
1.2. 状态的所有权¶
所有权与封装性总是互相关联的:对象封装他拥有的状态,反之也成立,即对它封装的状态拥有所有权。状态变量的所有者将决定采用何种枷锁协议来维持变量装的完整性。所有权意味着控制权。