Java併發22:Atomic系列-原子型別整體概述與類別劃分
阿新 • • 發佈:2019-01-02
從本章開始學習原子變數: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