Java中的Atomic
類位于java.util.concurrent.atomic
包中,它們提供了一系列原子操作方法,用于在多線程環境下進行無鎖的線程安全操作。以下是一些常用的Atomic
類及其方法:
AtomicInteger
get()
: 獲取當前值。set(int newValue)
: 設置新值。compareAndSet(int expect, int update)
: 如果當前值等于預期值,則以原子方式將其設置為更新值。getAndIncrement()
: 原子地遞增當前值并返回舊值。getAndDecrement()
: 原子地遞減當前值并返回舊值。getAndAdd(int delta)
: 原子地將給定值加到當前值并返回舊值。accumulateAndGet(int x, IntBinaryOperator accumulatorFunction)
: 使用給定的累加函數原子地更新當前值并返回舊值。AtomicLong
AtomicInteger
,但操作的是長整型(long)。AtomicBoolean
get()
: 獲取當前值。set(boolean newValue)
: 設置新值。compareAndSet(boolean expect, boolean update)
: 如果當前值等于預期值,則以原子方式將其設置為更新值。getAndSet(boolean newValue)
: 原子地設置新值并返回舊值。getAndChange()
: 原子地切換當前值并返回舊值。AtomicReference<V>
get()
: 獲取當前引用。set(V newValue)
: 設置新引用。compareAndSet(V expect, V update)
: 如果當前引用等于預期值,則以原子方式將其設置為更新值。getAndSet(V newValue)
: 原子地設置新引用并返回舊引用。weakCompareAndSet(V expect, V update)
: 類似于compareAndSet
,但使用弱一致性模型。AtomicIntegerFieldUpdater
compareAndSet(T obj, int expect, int update)
: 對指定對象的指定字段進行原子比較和設置操作。getAndIncrement(T obj)
: 對指定對象的指定字段進行原子遞增操作。getAndDecrement(T obj)
: 對指定對象的指定字段進行原子遞減操作。getAndAdd(T obj, int delta)
: 對指定對象的指定字段進行原子加法操作。AtomicLongFieldUpdater
AtomicIntegerFieldUpdater
,但操作的是長整型字段。AtomicReferenceFieldUpdater
AtomicIntegerFieldUpdater
,但操作的是引用類型字段。AtomicStampedReference<V>
compareAndSet(V expectedReference, V newReference, int expectedStamp, int newStamp)
: 使用版本號來避免ABA問題。get(int[] stampHolder)
: 獲取當前引用和版本號。AtomicMarkableReference<V>
compareAndSet(V expectedReference, V newReference, boolean expectedMark, boolean newMark)
: 使用標記位來避免ABA問題。get(int[] markHolder)
: 獲取當前引用和標記位。這些類和方法提供了高效且線程安全的原子操作,適用于各種并發編程場景。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。