跳转至

对象的组合

1.设计线程安全的类

再设计线程安全类的过程中,需要包含以下三个基本要素:

  • 找出构成对象状态的所有变量。
  • 找出约束状态变量的不变性条件。
  • 建立对象状态的并发访问管理策略。

1.1. 收集同步需求

  1. 不变性条件,使用==final==
  2. 后验性条件,使用==锁和封装==

如果不了解对象的不变性条件与后验条件,那么就不能确保线程的安全性。要满足在状态变量的有效值或状态转换上的各种约束条件,就需要借助与==原子性==和==封装性==

1.2. 状态的所有权

​ 所有权与封装性总是互相关联的:对象封装他拥有的状态,反之也成立,即对它封装的状态拥有所有权。状态变量的所有者将决定采用何种枷锁协议来维持变量装的完整性。所有权意味着控制权。

2.实例封闭

3.线程安全性的委托

4.在现有的线程安全类中添加功能

5.将同步策略同步化