1. 程式人生 > >Java併發22:Atomic系列-原子型別整體概述與類別劃分

Java併發22:Atomic系列-原子型別整體概述與類別劃分

從本章開始學習原子變數: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