|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.util.concurrent.atomic.AtomicLongFieldUpdater<T>
T
- 保持可更新欄位的物件型別public abstract class AtomicLongFieldUpdater<T>
基於反射的實用工具,可以對指定類別的指定 volatile long
欄位進行原子更新。此類別用於原子資料結構,該結構中同一節點的幾個欄位都獨立受原子更新控制。
注意,此類別中 compareAndSet
方法的保證弱於其他原子類別中該方法的保證。因為此類別不能確保所有使用的欄位都適合於原子存取目的,所以對於 compareAndSet 和 set 的其他調用,它僅可以保證原子性和可變語義。
建構子摘要 | |
---|---|
protected |
AtomicLongFieldUpdater()
受保護的無操作建構子,供子類別使用。 |
方法摘要 | ||
---|---|---|
long |
addAndGet(T obj,
long delta)
以原子方式將給定值添加到此更新器管理的給定物件的欄位的當前值。 |
|
abstract boolean |
compareAndSet(T obj,
long expect,
long update)
如果當前值 == 預期值,則以原子方式將此更新器所管理的給定物件的欄位設置為給定的更新值。 |
|
long |
decrementAndGet(T obj)
以原子方式將此更新器管理的給定物件欄位當前值減 1。 |
|
abstract long |
get(T obj)
獲取此更新器管理的在給定物件的欄位中保持的當前值。 |
|
long |
getAndAdd(T obj,
long delta)
以原子方式將給定值添加到此更新器管理的給定物件的欄位的當前值。 |
|
long |
getAndDecrement(T obj)
以原子方式將此更新器管理的給定物件欄位當前值減 1。 |
|
long |
getAndIncrement(T obj)
以原子方式將此更新器管理的給定物件欄位的當前值加 1。 |
|
long |
getAndSet(T obj,
long newValue)
將此更新器管理的給定物件的欄位以原子方式設置為給定值,並返回舊值。 |
|
long |
incrementAndGet(T obj)
以原子方式將此更新器管理的給定物件欄位當前值加 1。 |
|
abstract void |
lazySet(T obj,
long newValue)
最後將此更新器管理的給定物件的欄位設置為給定更新值。 |
|
static
|
newUpdater(Class<U> tclass,
String fieldName)
為物件創建並返回一個具有給定欄位的更新器。 |
|
abstract void |
set(T obj,
long newValue)
將此更新器管理的給定物件的欄位設置為給定更新值。 |
|
abstract boolean |
weakCompareAndSet(T obj,
long expect,
long update)
如果當前值 == 預期值,則以原子方式將此更新器所管理的給定物件的欄位設置為給定的更新值。 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
建構子詳細資訊 |
---|
protected AtomicLongFieldUpdater()
方法詳細資訊 |
---|
public static <U> AtomicLongFieldUpdater<U> newUpdater(Class<U> tclass, String fieldName)
tclass
- 保持欄位的物件類別fieldName
- 要更新的欄位名稱
IllegalArgumentException
- 如果該欄位不是可變的 long 型別
RuntimeException
- 如果該類別不保持欄位,或者是錯誤的型別,將拋出 RuntimeException 和一個巢狀的基於反射的異常。public abstract boolean compareAndSet(T obj, long expect, long update)
==
預期值,則以原子方式將此更新器所管理的給定物件的欄位設置為給定的更新值。對 compareAndSet
和 set
的其他調用,此方法可以確保原子性,但對於欄位中的其他更改則不一定確保原子性。
obj
- 有條件地設置其欄位的物件expect
- 預期值update
- 新值
ClassCastException
- 如果 obj
不是類別的實例(該類別處理在建構子中建立的欄位)。public abstract boolean weakCompareAndSet(T obj, long expect, long update)
==
預期值,則以原子方式將此更新器所管理的給定物件的欄位設置為給定的更新值。對 compareAndSet
和 set
的其他調用,此方法可以確保原子性,但對於欄位中的其他更改則不一定確保原子性。
可能意外失敗並且不提供排序保證,所以只有在很少的情況下才對 compareAndSet
進行適當地選擇。
obj
- 有條件地設置其欄位的物件expect
- 預期值update
- 新值
ClassCastException
- 如果 obj
不是類別的實例(該類別處理在建構子中建立的欄位)。public abstract void set(T obj, long newValue)
compareAndSet
的後續調用,此操作可以確保充當可變存儲。
obj
- 要設置其欄位的物件newValue
- 新值public abstract void lazySet(T obj, long newValue)
obj
- 要設置其欄位的物件newValue
- 新值public abstract long get(T obj)
obj
- 要獲取其欄位的物件
public long getAndSet(T obj, long newValue)
obj
- 要獲取並設置其欄位的物件newValue
- 新值
public long getAndIncrement(T obj)
obj
- 要獲取並設置其欄位的物件
public long getAndDecrement(T obj)
obj
- 要獲取並設置其欄位的物件
public long getAndAdd(T obj, long delta)
obj
- 要獲取並設置其欄位的物件delta
- 要添加的值
public long incrementAndGet(T obj)
obj
- 要獲取並設置其欄位的物件
public long decrementAndGet(T obj)
obj
- 要獲取並設置其欄位的物件
public long addAndGet(T obj, long delta)
obj
- 要獲取並設置其欄位的物件delta
- 要添加的值
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。