由于變量的類型有很多種纲辽,所以在atomic包中一共提供了13個類,屬于4種類型的原子更新方式:
(1)原子更新基本類型
(2)原子更新數(shù)組
(3)原子更新引用
(4)原子更新屬性(字段)
7.1 原子更新基本類型
使用原子的方式更新基本類型黄锤,atomic包提供了以下3個類:
(1)原子更新布爾值:AtomicBoolean
(2)原子更新整形:AtomicInteger
(3)原子更新長整形:AtomicLong
7.2 原子更新數(shù)組
(1)原子更新整形數(shù)組里的元素:AtomicIntegerArray
(2)原子更新長整形數(shù)組里的元素:AtomicLongArray
(3)原子更新引用類型數(shù)組里的元素:AtomicReferenceArray
需要注意的是挥转,數(shù)組通過構(gòu)造方法AtomicIntegerArray(int [ ] array)傳遞進(jìn)去个少,AtomicIntegerArray會將當(dāng)該數(shù)組復(fù)制一份踏揣,所以不會修改原有數(shù)組锻全。
而構(gòu)造函數(shù)AtomicIntegerArray(int size)會創(chuàng)建一個新的大小為size的int 數(shù)組。
7.3 原子更新引用類型
(1)AtomicReference:原子更新引用類型
(2)AtomicReferenceFieldUpdater:原子更新引用類型的字段
(3)AtomicMarkableReference:原子更新帶有標(biāo)記位的引用類型
7.4 原子更新字段
(1)AtomicIntegerFieldUpdater:原子更新整形的字段
(2)AtomicLongFieldUpdater:原子更新長整形的字段
(3)AtomicStampedReference:原子更新帶有版本號的引用類型录煤,可用于原子的更新數(shù)據(jù)和數(shù)據(jù)的版本號鳄厌。
想要原子的更新字段需要兩步,(1)使用newUpdater創(chuàng)建一個更新器妈踊,設(shè)置想要更新的類和屬性了嚎。
(2)更新類的屬性和字段必須使用public volatile修飾。