从本章开始学习原子变量:Atomic,包路径为:java.util.concurrent.atomic。
本章主要对java.util.concurrent.atomic开发包下的类进行整体概述与类别划分。
1.版本说明
在JDK1.5版本之前,多行代码的原子性主要通过synchronized关键字进行保证。
在JDK1.5版本,Java提供了原子类型专门确保变量操作的原子性。
2.开发包整体说明
原子类型位于java.util.concurrent.atomic包下,其主要类如下:
其类图关系如下:
3.原子类型划分
为了方面对这些类逐级掌握,我将这些原子类型分为以下几类:
- 普通原子类型:提供对boolean、int、long和对象的原子性操作。
- AtomicBoolean
- AtomicInteger
- AtomicLong
- AtomicReference
- 原子类型数组:提供对数组元素的原子性操作。
- AtomicLongArray
- AtomicIntegerArray
- AtomicReferenceArray
- 原子类型字段更新器:提供对指定对象的指定字段进行原子性操作。
- AtomicLongFieldUpdater
- AtomicIntegerFieldUpdater
- AtomicReferenceFieldUpdater
- 带版本号的原子引用类型:以版本戳的方式解决原子类型的ABA问题。
- AtomicStampedReference
- AtomicMarkableReference
- 原子累加器(JDK1.8):AtomicLong和AtomicDouble的升级类型,专门用于数据统计,性能更高。
- DoubleAccumulator
- DoubleAdder
- LongAccumulator
- LongAdder