モジュール java.base

クラスAtomicReference<V>

  • 型パラメータ:
    V - この参照により参照されるオブジェクトの型
    すべての実装されたインタフェース:
    Serializable

    public class AtomicReference<V>
    extends Object
    implements Serializable
    原子的な更新が可能なオブジェクト参照です。 アトミック・アクセスのプロパティの詳細は、VarHandleの仕様を参照してください。
    導入されたバージョン:
    1.5
    関連項目:
    直列化された形式
    • コンストラクタの詳細

      • AtomicReference

        public AtomicReference​(V initialValue)
        指定された初期パラメータを使って、新しいAtomicReferenceを作成します。
        パラメータ:
        initialValue - 初期値
      • AtomicReference

        public AtomicReference()
        初期値nullを使って、新しいAtomicReferenceを作成します。
    • メソッドの詳細

      • set

        public final void set​(V newValue)
        VarHandle.setVolatile(java.lang.Object...)で指定されたメモリー効果を使用して、値をnewValueに設定します。
        パラメータ:
        newValue - 新しい値
      • lazySet

        public final void lazySet​(V newValue)
        VarHandle.setRelease(java.lang.Object...)で指定されたメモリー効果を使用して、値をnewValueに設定します。
        パラメータ:
        newValue - 新しい値
        導入されたバージョン:
        1.6
      • compareAndSet

        public final boolean compareAndSet​(V expectedValue,
                                           V newValue)
        現在の値が== expectedValueの場合、VarHandle.compareAndSet(java.lang.Object...)で指定されたメモリー効果を使用して、値をnewValueに原子的に設定します。
        パラメータ:
        expectedValue - 必要な値
        newValue - 新しい値
        戻り値:
        成功する場合はtrue falseは、実際の値が予想される値と等価ではないことを示す。
      • weakCompareAndSet

        @Deprecated(since="9")
        public final boolean weakCompareAndSet​(V expectedValue,
                                               V newValue)
        非推奨。
        このメソッドにはプレーン・メモリー効果がありますが、メソッド名は揮発性メモリー効果を意味します(compareAndExchange(V, V)compareAndSet(V, V)などのメソッドを参照)。 プレーン・メモリーまたは揮発性メモリーの影響による混乱を避けるため、かわりにメソッドweakCompareAndSetPlain(V, V)を使用することをお薦めします。
        VarHandle.weakCompareAndSetPlain(java.lang.Object...)で指定されたメモリー効果を使用して、現在の値== expectedValueの場合、値を原子的にnewValueに設定します。
        パラメータ:
        expectedValue - 必要な値
        newValue - 新しい値
        戻り値:
        成功した場合はtrue
        関連項目:
        weakCompareAndSetPlain(V, V)
      • weakCompareAndSetPlain

        public final boolean weakCompareAndSetPlain​(V expectedValue,
                                                    V newValue)
        VarHandle.weakCompareAndSetPlain(java.lang.Object...)で指定されたメモリー効果を使用して、現在の値== expectedValueの場合、値を原子的にnewValueに設定します。
        パラメータ:
        expectedValue - 必要な値
        newValue - 新しい値
        戻り値:
        成功した場合はtrue
        導入されたバージョン:
        9
      • getAndSet

        public final V getAndSet​(V newValue)
        VarHandle.getAndSet(java.lang.Object...)で指定されたメモリー効果を使用して、値をnewValueにアトミックに設定し、古い値を返します。
        パラメータ:
        newValue - 新しい値
        戻り値:
        前の値
      • getAndUpdate

        public final V getAndUpdate​(UnaryOperator<V> updateFunction)
        VarHandle.compareAndSet(java.lang.Object...)で指定されたメモリー効果を使用して、現在の値を、指定された関数を適用した結果で原子的に更新し、以前の値を返します。 関数は、試行した更新がスレッド間の競合のため失敗したときに再度適用される可能性があるため、副作用を持つべきではありません。
        パラメータ:
        updateFunction - 副作用のない関数
        戻り値:
        前の値
        導入されたバージョン:
        1.8
      • updateAndGet

        public final V updateAndGet​(UnaryOperator<V> updateFunction)
        VarHandle.compareAndSet(java.lang.Object...)で指定されたメモリー効果を使用して、現在の値を特定の関数を適用した結果で原子的に更新し、更新された値を返します。 関数は、試行した更新がスレッド間の競合のため失敗したときに再度適用される可能性があるため、副作用を持つべきではありません。
        パラメータ:
        updateFunction - 副作用のない関数
        戻り値:
        更新された値
        導入されたバージョン:
        1.8
      • getAndAccumulate

        public final V getAndAccumulate​(V x,
                                        BinaryOperator<V> accumulatorFunction)
        VarHandle.compareAndSet(java.lang.Object...)で指定されたメモリー効果を使用して、現在の値を現在の値と指定された値に適用した結果で原子的に更新し、前の値を返します。 関数は、試行した更新がスレッド間の競合のため失敗したときに再度適用される可能性があるため、副作用を持つべきではありません。 関数は、現在の値を第1引数とし、指定された更新値を第2引数として適用されます。
        パラメータ:
        x - 更新値
        accumulatorFunction - 2つの引数を取る、副作用のない関数
        戻り値:
        前の値
        導入されたバージョン:
        1.8
      • accumulateAndGet

        public final V accumulateAndGet​(V x,
                                        BinaryOperator<V> accumulatorFunction)
        VarHandle.compareAndSet(java.lang.Object...)で指定されたメモリー効果を使用して、現在の値を現在の値と指定された値に適用した結果で原子的に更新し、更新された値を返します。 関数は、試行した更新がスレッド間の競合のため失敗したときに再度適用される可能性があるため、副作用を持つべきではありません。 関数は、現在の値を第1引数とし、指定された更新値を第2引数として適用されます。
        パラメータ:
        x - 更新値
        accumulatorFunction - 2つの引数を取る、副作用のない関数
        戻り値:
        更新された値
        導入されたバージョン:
        1.8
      • toString

        public String toString()
        現在値の文字列表記を返します。
        オーバーライド:
        toString、クラスObject
        戻り値:
        現在値の文字列表現。
      • getPlain

        public final V getPlain()
        変数が非volatileとして宣言されたかのように、読取りのメモリー・セマンティクスを使用して、現在の値を返します。
        戻り値:
        導入されたバージョン:
        9
      • setPlain

        public final void setPlain​(V newValue)
        変数が非volatileおよび非finalとして宣言されたかのように設定するメモリー・セマンティクスを使用して、値をnewValueに設定します。
        パラメータ:
        newValue - 新しい値
        導入されたバージョン:
        9
      • getOpaque

        public final V getOpaque()
        VarHandle.getOpaque(java.lang.Object...)で指定されたメモリー効果を使用して、現在の値を返します。
        戻り値:
        導入されたバージョン:
        9
      • setOpaque

        public final void setOpaque​(V newValue)
        VarHandle.setOpaque(java.lang.Object...)で指定されたメモリー効果を使用して、値をnewValueに設定します。
        パラメータ:
        newValue - 新しい値
        導入されたバージョン:
        9
      • getAcquire

        public final V getAcquire()
        VarHandle.getAcquire(java.lang.Object...)で指定されたメモリー効果を使用して、現在の値を返します。
        戻り値:
        導入されたバージョン:
        9
      • setRelease

        public final void setRelease​(V newValue)
        VarHandle.setRelease(java.lang.Object...)で指定されたメモリー効果を使用して、値をnewValueに設定します。
        パラメータ:
        newValue - 新しい値
        導入されたバージョン:
        9
      • compareAndExchange

        public final V compareAndExchange​(V expectedValue,
                                          V newValue)
        witness value (== expectedValue)と呼ばれる現在の値が、VarHandle.compareAndExchange(java.lang.Object...)で指定されたメモリー効果を持つ場合は、この値をnewValueに原子的に設定します。
        パラメータ:
        expectedValue - 必要な値
        newValue - 新しい値
        戻り値:
        成功した場合の期待値と同じ証人値
        導入されたバージョン:
        9
      • compareAndExchangeAcquire

        public final V compareAndExchangeAcquire​(V expectedValue,
                                                 V newValue)
        witness value (== expectedValue)と呼ばれる現在の値が、VarHandle.compareAndExchangeAcquire(java.lang.Object...)で指定されたメモリー効果を持つ場合は、この値をnewValueに原子的に設定します。
        パラメータ:
        expectedValue - 必要な値
        newValue - 新しい値
        戻り値:
        成功した場合の期待値と同じ証人値
        導入されたバージョン:
        9
      • compareAndExchangeRelease

        public final V compareAndExchangeRelease​(V expectedValue,
                                                 V newValue)
        witness value (== expectedValue)と呼ばれる現在の値が、VarHandle.compareAndExchangeRelease(java.lang.Object...)で指定されたメモリー効果を持つ場合は、この値をnewValueに原子的に設定します。
        パラメータ:
        expectedValue - 必要な値
        newValue - 新しい値
        戻り値:
        成功した場合の期待値と同じ証人値
        導入されたバージョン:
        9
      • weakCompareAndSetVolatile

        public final boolean weakCompareAndSetVolatile​(V expectedValue,
                                                       V newValue)
        VarHandle.weakCompareAndSet(java.lang.Object...)で指定されたメモリー効果を使用して、現在の値== expectedValueの場合、値を原子的にnewValueに設定します。
        パラメータ:
        expectedValue - 必要な値
        newValue - 新しい値
        戻り値:
        成功した場合はtrue
        導入されたバージョン:
        9
      • weakCompareAndSetAcquire

        public final boolean weakCompareAndSetAcquire​(V expectedValue,
                                                      V newValue)
        VarHandle.weakCompareAndSetAcquire(java.lang.Object...)で指定されたメモリー効果を使用して、現在の値== expectedValueの場合、値を原子的にnewValueに設定します。
        パラメータ:
        expectedValue - 必要な値
        newValue - 新しい値
        戻り値:
        成功した場合はtrue
        導入されたバージョン:
        9
      • weakCompareAndSetRelease

        public final boolean weakCompareAndSetRelease​(V expectedValue,
                                                      V newValue)
        VarHandle.weakCompareAndSetRelease(java.lang.Object...)で指定されたメモリー効果を使用して、現在の値== expectedValueの場合、値を原子的にnewValueに設定します。
        パラメータ:
        expectedValue - 必要な値
        newValue - 新しい値
        戻り値:
        成功した場合はtrue
        導入されたバージョン:
        9