轻量级写时复制实现
Java 语言本身提供了两个 COW 数据结构 CopyOnWriteArrayList 和 CopyOnWriteArraySet,但在某些场景下,比如配置信息热更新、缓存系统数据刷新和一些读多写少且需要保证数据一致性的场景,它们太重了。以 CopyOnWriteArrayList 的 add 方法为例,它在实现时使用了 synchronized 同步代码块。在这些场景下,我们可以使用一种轻量级的实现方式,即原子性地替换引用并利用 volatile 保证其他线程的可见性。