本博客系列是學習並發編程過程中的記錄總結。由於文章比較多,寫的時間也比較散,所以我整理了個目錄貼(傳送門),方便查閱。
本文是轉載文章,原文請見此博客,文章主要對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