モジュール java.base

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

        public boolean compareAndSet​(V expectedReference,
                                     V newReference,
                                     int expectedStamp,
                                     int newStamp)
        「現在の参照==予想される参照」であり、現在のスタンプが予想されるスタンプに等しい場合、参照およびスタンプの値を指定された更新値に原子的に設定します。
        パラメータ:
        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