Atomic

JDK 1.8 的 java.util.concurrent.atomic 包下,定义了 17 个 Atomic(原子类),它们扩展了 volatile 的语义,保证了单个变量的原子性、有序性与可见性。相比于 synchronized,原子类底层使用 CAS 实现了 lock-free 的算法,性能更高。

原子类的实现基本是基于 Unsafe 包里的更底层的能力,我们会以 AtomicInteger 为例,分析原子类的实现,同时分析其它原子类实现中的一些亮点。我们假设你已经了解了 Unsafe 类中各方法的语义,不了解的也可以看本书前面的 Unsafe 一章。