原子类
原子类
目录
什么是原子类,有什么作用
- 不可分割
- 一个操作是不可分割的,即便是多线程的情况下,也可以保证
- 都存放在java.util.concurrent包下。
- 原子类的作用和锁类似,是为了保证并发情况下线程安全。不过原子类相比于锁,有一定的优势
- 粒度更细:原子变量可以把竞争范围缩小到变量级别,这是我们可以获得的最细粒度的情况了,通常锁的粒度都要大于原子变量的粒度
- 效率更高:通常,使用原子类的效率会比使用锁的效率更高,除了高度竞争的情况
6类原子类纵览
Atomic*基本类型原子类 | AtomicInteger、AtomicLong、AtomicBoolean |
---|---|
Atomic*Array数组类型原子类 | AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray |
Atomic*Reference引用类型原子类 | AtomicReference、AtomicStampedReference、AtomicMarkableReference |
Atomic*FieldUpdater升级类型原子类 | AtomicIntegerfieldupdater、AtomicLongFieldUpdater、AtomicReferenceFieldUpdator |
Adder累加器 | LongAdder、DoubleAdder |
Accumulator累加器 | LongAccumulator、DoubleAccumulator |
Atomic*基本类型,以AtomicInteger为例
- AtomicInteger
- AtomicLong
- AtomicBoolean