Java原子操作辅助类
原子类、原子引用、原子数组、字段更新器、原子累加器
原子类
- AtomicInteger、AtomicLong、AtomicBoolean
原子引用
- AtomicReference
存在ABA问题 - AtomicStampedReference
可以给原子引用加上版本号,追踪原子引用的整个变化过程,知道中途被改了几次。
解决了ABA问题 - AtomicMarkedReference
只关心状态,不在乎是否被修改过,改了多少次
原子数组
- AtomicIntegerArray、AtomicLongArray
字段更新器
利用字段更新器,可以针对对象的某个域、字段进行原子更新保护
- AtomicIntegerFieldUpdater、AtomicLongFieldUpdater、AtomicReferenceFieldUpdater
原子累加器(jdk8+)
设置多个累加单元,最终将结果汇总。
累加时,可以操作不同的单元,降低竞争几率,减少CAS重试次数,从而提高性能。
发生竞争时,会分成两个单元,再发生竞争则分成4个,最多不超过CPU核心数
- LongAdder、LongAccumulator、DoubleAdder、DoubleAccumulator