并发编程 原子类
本文将介绍并发编程中的原子类。
一、什么是原子类?
JUC 提供了一系列原子类,它们能够在无需加锁的情况下解决原子性问题。
具体请看:
二、原子类的实现原理
通过 CAS + 自旋实现,具体请看:
三、常见原子类
1. 引用类型
引用类型的原子类封装,支持 “比较对象地址并交换” 功能。
其中,
- AtomicReference
- AtomicStampedReference:可以解决 ABA 问题和指针问题,解决方式是:每次执行操作时,额外更新一个版本号,保证版本号递增
- AtomicMarkableReference:可以缓解 ABA 问题和指针问题,其工作方式是:每次执行操作时,更新类型为 boolean 的标记
2. 累加器
累加器的原子性封装。
DoubleAccumulator、DoubleAdder、LongAccumulator 和 LongAdder 用于执行累加操作,它们的性能更好。
参考
- Java 并发编程实战