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