java.lang.Object
java.util.concurrent.atomic.AtomicStampedReference<V>
- 型パラメータ:
V
- この参照により参照されるオブジェクトの型
public class AtomicStampedReference<V> extends Object
AtomicStampedReference
は、原子的に更新可能な整数「スタンプ」とともに、オブジェクト参照を管理します。
実装にあたってのノート: この実装は、括弧で囲まれた[参照、整数]のペアを表す内部オブジェクトを作成することにより、スタンプされた参照を維持します。
- 導入されたバージョン:
- 1.5
-
コンストラクタのサマリー
コンストラクタ説明AtomicStampedReference
(V initialRef, int initialStamp) 指定された初期値を使って、新しいAtomicStampedReference
を作成します。 -
メソッドのサマリー
修飾子と型メソッド説明boolean
attemptStamp
(V expectedReference, int newStamp) 「現在の参照==
予想される参照」である場合は、スタンプの値を指定された更新値に原子的に設定します。boolean
compareAndSet
(V expectedReference, V newReference, int expectedStamp, int newStamp) 「現在の参照==
予想される参照」であり、現在のスタンプが予想されるスタンプに等しい場合、参照およびスタンプの値を指定された更新値に原子的に設定します。get
(int[] stampHolder) 参照およびスタンプの現在値を返します。参照の現在値を返します。int
getStamp()
スタンプの現在値を返します。void
参照およびスタンプの値を無条件に設定します。boolean
weakCompareAndSet
(V expectedReference, V newReference, int expectedStamp, int newStamp) 「現在の参照==
予想される参照」であり、現在のスタンプが予想されるスタンプに等しい場合、参照およびスタンプの値を指定された更新値に原子的に設定します。
-
コンストラクタの詳細
-
AtomicStampedReference
public AtomicStampedReference(V initialRef, int initialStamp) 指定された初期値を使って、新しいAtomicStampedReference
を作成します。- パラメータ:
initialRef
- 初期参照initialStamp
- 初期スタンプ
-
-
メソッドの詳細
-
getReference
public V getReference()参照の現在値を返します。- 戻り値:
- 参照の現在値
-
getStamp
public int getStamp()スタンプの現在値を返します。- 戻り値:
- スタンプの現在値
-
get
public V get(int[] stampHolder) 参照およびスタンプの現在値を返します。 通常の使用法はint[1] holder; ref = v.get(holder);
です。- パラメータ:
stampHolder
- 1以上のサイズの配列。 折り返し、stampHolder[0]
はスタンプの値を保持します。- 戻り値:
- 参照の現在値
-
weakCompareAndSet
public boolean weakCompareAndSet(V expectedReference, V newReference, int expectedStamp, int newStamp) 「現在の参照==
予想される参照」であり、現在のスタンプが予想されるスタンプに等しい場合、参照およびスタンプの値を指定された更新値に原子的に設定します。 この操作は誤って失敗する可能性があり、順序付けの保証は提供されないため、compareAndSet
のかわりに適したものになることはほとんどありません。- パラメータ:
expectedReference
- 参照の予想される値newReference
- 参照の新しい値expectedStamp
- スタンプの予想される値newStamp
- スタンプの新しい値- 戻り値:
- 成功した場合は
true
-
compareAndSet
「現在の参照==
予想される参照」であり、現在のスタンプが予想されるスタンプに等しい場合、参照およびスタンプの値を指定された更新値に原子的に設定します。- パラメータ:
expectedReference
- 参照の予想される値newReference
- 参照の新しい値expectedStamp
- スタンプの予想される値newStamp
- スタンプの新しい値- 戻り値:
- 成功した場合は
true
-
set
public void set(V newReference, int newStamp) 参照およびスタンプの値を無条件に設定します。- パラメータ:
newReference
- 参照の新しい値newStamp
- スタンプの新しい値
-
attemptStamp
public boolean attemptStamp(V expectedReference, int newStamp) 「現在の参照==
予想される参照」である場合は、スタンプの値を指定された更新値に原子的に設定します。 この操作の指定された呼出しはすべて、見かけ上失敗する(false
を返す)可能性があります。ただし、現在の値が予想される値を保持し、値の設定を試みるほかのスレッドが存在しない場合は、呼出しが繰り返されることで最終的に成功します。- パラメータ:
expectedReference
- 参照の予想される値newStamp
- スタンプの新しい値- 戻り値:
- 成功した場合は
true
-