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