Atomic系列类整体介绍
本博客系列是学习并发编程过程中的记录总结。由于文章比较多,写的时间也比较散,所以我整理了个目录贴(传送门),方便查阅。
本文是转载文章,原文请见此博客,文章主要对java.util.concurrent.atomic
开发包下的类进行整体概述与类别划分。
版本说明
在JDK1.5版本之前,多行代码的原子性主要通过synchronized关键字进行保证。
在JDK1.5版本,Java提供了原子类型专门确保变量操作的原子性。
开发包整体说明
原子类型位于java.util.concurrent.atomic包下,其主要类如下:
其类图关系如下:
原子类型划分
为了方面对这些类逐级掌握,我将这些原子类型分为以下几类:
-
普通原子类型:提供对boolean、int、long和对象的原子性操作。
- AtomicBoolean
- AtomicInteger
- AtomicLong
- AtomicReference
-
原子类型数组:提供对数组元素的原子性操作。
- AtomicLongArray
- AtomicIntegerArray
- AtomicReferenceArray
-
原子类型字段更新器:提供对指定对象的指定字段进行原子性操作。
- AtomicLongFieldUpdater
- AtomicIntegerFieldUpdater
- AtomicReferenceFieldUpdater
-
带版本号的原子引用类型:以版本戳的方式解决原子类型的ABA问题。
- AtomicStampedReference
- AtomicMarkableReference
-
原子累加器(JDK1.8):AtomicLong和AtomicDouble的升级类型,专门用于数据统计,性能更高。
- DoubleAccumulator
- DoubleAdder
- LongAccumulator
- LongAdder
人生的主旋律其实是苦难,快乐才是稀缺资源。在困难中寻找快乐,才显得珍贵~