クラスAtomicReference<V>

java.lang.Object
java.util.concurrent.atomic.AtomicReference<V>
型パラメータ:
V - この参照によって参照されるオブジェクトのタイプ
すべての実装されたインタフェース:
Serializable

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

    コンストラクタ
    コンストラクタ
    説明
    初期値nullを使って、新しいAtomicReferenceを作成します。
    AtomicReference(V initialValue)
    指定された初期パラメータを使って、新しいAtomicReferenceを作成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    final V
    accumulateAndGet(V x, BinaryOperator<V> accumulatorFunction)
    VarHandle.compareAndSet(Object...)で指定されたメモリー効果を使用して、現在の値を現在の値と指定された値に適用した結果とともに原子的に更新し、更新された値を返します。
    final V
    compareAndExchange(V expectedValue, V newValue)
    witness value (== expectedValue)と呼ばれる現在の値が、VarHandle.compareAndExchange(Object...)で指定されたメモリー効果を持つ場合に、アトミックに値をnewValueに設定します。
    final V
    compareAndExchangeAcquire(V expectedValue, V newValue)
    witness value (== expectedValue)と呼ばれる現在の値が、VarHandle.compareAndExchangeAcquire(Object...)で指定されたメモリー効果を持つ場合に、アトミックに値をnewValueに設定します。
    final V
    compareAndExchangeRelease(V expectedValue, V newValue)
    witness value (== expectedValue)と呼ばれる現在の値が、VarHandle.compareAndExchangeRelease(Object...)で指定されたメモリー効果を持つ場合に、アトミックに値をnewValueに設定します。
    final boolean
    compareAndSet(V expectedValue, V newValue)
    現在の値が== expectedValueの場合は、VarHandle.compareAndSet(Object...)で指定されたメモリー効果を使用して、この値を原子的にnewValueに設定します。
    final V
    get()
    VarHandle.getVolatile(Object...)で指定されたメモリー効果を使用して、現在の値を返します。
    final V
    VarHandle.getAcquire(Object...)で指定されたメモリー効果を使用して、現在の値を返します。
    final V
    getAndAccumulate(V x, BinaryOperator<V> accumulatorFunction)
    (VarHandle.compareAndSet(Object...)で指定されているメモリー効果を使用して)現在の値を、指定された関数を現在の値および指定された値に適用した結果とともに原子的に更新し、以前の値を返します。
    final V
    getAndSet(V newValue)
    原子的に値をnewValueに設定し、VarHandle.getAndSet(Object...)で指定されたメモリー効果で古い値を返します。
    final V
    getAndUpdate(UnaryOperator<V> updateFunction)
    (VarHandle.compareAndSet(Object...)で指定されたメモリー効果を使用して)現在の値を、指定された関数を適用した結果とともに原子的に更新し、以前の値を返します。
    final V
    VarHandle.getOpaque(Object...)で指定されたメモリー効果を使用して、現在の値を返します。
    final V
    変数がvolatile以外と宣言されたかのように、読取りのメモリー・セマンティクスを使用して、現在の値を返します。
    final void
    lazySet(V newValue)
    VarHandle.setRelease(Object...)で指定されたメモリー効果を使用して、値をnewValueに設定します。
    final void
    set(V newValue)
    VarHandle.setVolatile(Object...)で指定されたメモリー効果を使用して、値をnewValueに設定します。
    final void
    setOpaque(V newValue)
    VarHandle.setOpaque(Object...)で指定されたメモリー効果を使用して、値をnewValueに設定します。
    final void
    setPlain(V newValue)
    値がnewValueに設定され、変数が非volatileおよび非finalとして宣言されているかのように設定されたメモリー・セマンティクスが使用されます。
    final void
    setRelease(V newValue)
    VarHandle.setRelease(Object...)で指定されたメモリー効果を使用して、値をnewValueに設定します。
    現在値の文字列表記を返します。
    final V
    updateAndGet(UnaryOperator<V> updateFunction)
    (VarHandle.compareAndSet(Object...)で指定されたメモリー効果を使用して)現在の値を、指定された関数を適用した結果とともに原子的に更新し、更新された値を返します。
    final boolean
    weakCompareAndSet(V expectedValue, V newValue)
    非推奨。
    このメソッドは単純なメモリー効果を持ちますが、メソッド名は揮発性メモリー効果(compareAndExchange(V, V)compareAndSet(V, V)などのメソッドを参照してください)を意味します。
    final boolean
    weakCompareAndSetAcquire(V expectedValue, V newValue)
    現在の値が== expectedValueの場合は、VarHandle.weakCompareAndSetAcquire(Object...)で指定されたメモリー効果で、アトミックに値がnewValueに設定される可能性があります。
    final boolean
    weakCompareAndSetPlain(V expectedValue, V newValue)
    現在の値が== expectedValueの場合は、VarHandle.weakCompareAndSetPlain(Object...)で指定されたメモリー効果で、アトミックに値がnewValueに設定される可能性があります。
    final boolean
    weakCompareAndSetRelease(V expectedValue, V newValue)
    現在の値が== expectedValueの場合は、VarHandle.weakCompareAndSetRelease(Object...)で指定されたメモリー効果で、アトミックに値がnewValueに設定される可能性があります。
    final boolean
    weakCompareAndSetVolatile(V expectedValue, V newValue)
    現在の値が== expectedValueの場合は、VarHandle.weakCompareAndSet(Object...)で指定されたメモリー効果で、アトミックに値がnewValueに設定される可能性があります。

    クラスオブジェクトで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    boolean
    このオブジェクトと他のオブジェクトが等しいかどうかを示します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    int
    このオブジェクトに対するハッシュ・コード値を返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
  • コンストラクタの詳細

    • AtomicReference

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

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

    • get

      public final V get()
      VarHandle.getVolatile(Object...)で指定されたメモリー効果を使用して、現在の値を返します。
      戻り値:
      現行値
    • set

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

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

      public final boolean compareAndSet(V expectedValue, V newValue)
      現在の値が== expectedValueの場合は、VarHandle.compareAndSet(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)メソッドを使用することをお勧めします。
      現在の値が== expectedValueの場合は、VarHandle.weakCompareAndSetPlain(Object...)で指定されたメモリー効果で、アトミックに値がnewValueに設定される可能性があります。
      パラメータ:
      expectedValue - 期待値
      newValue - 新しい値
      戻り値:
      成功した場合はtrue
      関連項目:
    • weakCompareAndSetPlain

      public final boolean weakCompareAndSetPlain(V expectedValue, V newValue)
      現在の値が== expectedValueの場合は、VarHandle.weakCompareAndSetPlain(Object...)で指定されたメモリー効果で、アトミックに値がnewValueに設定される可能性があります。
      パラメータ:
      expectedValue - 期待値
      newValue - 新しい値
      戻り値:
      成功した場合はtrue
      導入されたバージョン:
      9
    • getAndSet

      public final V getAndSet(V newValue)
      原子的に値をnewValueに設定し、VarHandle.getAndSet(Object...)で指定されたメモリー効果で古い値を返します。
      パラメータ:
      newValue - 新しい値
      戻り値:
      前の値
    • getAndUpdate

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

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

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

      public final V accumulateAndGet(V x, BinaryOperator<V> accumulatorFunction)
      VarHandle.compareAndSet(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)
      値がnewValueに設定され、変数が非volatileおよび非finalとして宣言されているかのように設定されたメモリー・セマンティクスが使用されます。
      パラメータ:
      newValue - 新しい値
      導入されたバージョン:
      9
    • getOpaque

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

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

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

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

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

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

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

      public final boolean weakCompareAndSetVolatile(V expectedValue, V newValue)
      現在の値が== expectedValueの場合は、VarHandle.weakCompareAndSet(Object...)で指定されたメモリー効果で、アトミックに値がnewValueに設定される可能性があります。
      パラメータ:
      expectedValue - 期待値
      newValue - 新しい値
      戻り値:
      成功した場合はtrue
      導入されたバージョン:
      9
    • weakCompareAndSetAcquire

      public final boolean weakCompareAndSetAcquire(V expectedValue, V newValue)
      現在の値が== expectedValueの場合は、VarHandle.weakCompareAndSetAcquire(Object...)で指定されたメモリー効果で、アトミックに値がnewValueに設定される可能性があります。
      パラメータ:
      expectedValue - 期待値
      newValue - 新しい値
      戻り値:
      成功した場合はtrue
      導入されたバージョン:
      9
    • weakCompareAndSetRelease

      public final boolean weakCompareAndSetRelease(V expectedValue, V newValue)
      現在の値が== expectedValueの場合は、VarHandle.weakCompareAndSetRelease(Object...)で指定されたメモリー効果で、アトミックに値がnewValueに設定される可能性があります。
      パラメータ:
      expectedValue - 期待値
      newValue - 新しい値
      戻り値:
      成功した場合はtrue
      導入されたバージョン:
      9