モジュール java.base

クラスAtomicMarkableReference<V>

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を作成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    boolean
    attemptMark(V expectedReference, boolean newMark)
    「現在の参照==予想される参照」である場合は、マークの値を指定された更新値に原子的に設定します。
    boolean
    compareAndSet(V expectedReference, V newReference, boolean expectedMark, boolean newMark)
    「現在の参照==予想される参照」であり、現在のマークが予想されるマークに等しい場合、参照およびマークの値を指定された更新値に原子的に設定します。
    get(boolean[] markHolder)
    参照およびマークの現在値を返します。
    参照の現在値を返します。
    boolean
    マークの現在値を返します。
    void
    set(V newReference, boolean newMark)
    参照およびマークの値を無条件に設定します。
    boolean
    weakCompareAndSet(V expectedReference, V newReference, boolean expectedMark, boolean newMark)
    「現在の参照==予想される参照」であり、現在のマークが予想されるマークに等しい場合、参照およびマークの値を指定された更新値に原子的に設定します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • コンストラクタの詳細

    • 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