Java 多线程编程设计模式之Immutable Object 模式

JDK1.5 中引入的类 java.uti.concurrent.CopyOnWriteArrayList 应用了Immutable Object 模式,使得 对CopyOnWriteArrayList 实例进行遍历时不用加锁也能保证线程安全。它是专门对遍历操作的频率比添加和删除操作更加频繁的场景设计的。

Immutable Object 模式适用于:
1. 被建模对象的状态变化不频繁
2. 同时对一组相关的数据进行写操作,因此需要保证原子性,将一组相关的数据“组合”成一个不可变的对象,则对这一组数据的操作可以无需加显式锁也能保证原子性。
3. 使用某个对象作为安全的HashMap 的Key. 由于不可变对象的状态不变,因此其Hash Code 也不变。这使得不可变对象(如 String)非常适于用作HashMap 的 Key.

JDK 1.5 引入的类 jva.util.concurrent.CopyOnWriteArrayList 应用了 Immutable Object 模式,使得对CopyOnWriteArrayList 实例进行遍历时不用加锁也能保证线程安全,它专门针对遍历操作的频率比添加和删除操作更加频繁的场景设计的。
Java 多线程编程设计模式之Immutable Object 模式