Fork me on Gitee

原子类

原子类

什么是原子类,有什么作用

  • 不可分割
  • 一个操作是不可分割的,即便是多线程的情况下,也可以保证
  • 都存放在java.util.concurrent包下。
  • 原子类的作用和锁类似,是为了保证并发情况下线程安全。不过原子类相比于锁,有一定的优势
    • 粒度更细:原子变量可以把竞争范围缩小到变量级别,这是我们可以获得的最细粒度的情况了,通常锁的粒度都要大于原子变量的粒度
    • 效率更高:通常,使用原子类的效率会比使用锁的效率更高,除了高度竞争的情况

6类原子类纵览

image-20240303122536504

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

常用方法

image-20240303122748013

image-20240303122842376

Atomic*Array数组类型原子类

Atomic*Reference引用类型原子类

把普通变量升级为原子类:用AtomicIntegerFieldUpdate升级原有变量

Adder累加器

Accumulator累加器

posted @ 2024-03-03 23:27  shine-rainbow  阅读(8)  评论(0编辑  收藏  举报