モジュール java.base

クラス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)
      「現在の参照==予想される参照」であり、現在のマークが予想されるマークに等しい場合、参照およびマークの値を指定された更新値に原子的に設定します。
      V get​(boolean[] markHolder)
      参照およびマークの現在値を返します。
      V getReference()
      参照の現在値を返します。
      boolean isMarked()
      マークの現在値を返します。
      void set​(V newReference, boolean newMark)
      参照およびマークの値を無条件に設定します。
      boolean weakCompareAndSet​(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