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) 現在の値を現在の値と指定された値に適用した結果を原子的に更新し、更新された値を返します。final V
compareAndExchange
(V expectedValue, V newValue) 「証人の価値」、== expectedValue
と呼ばれる現在の値がnewValue
に原子的に設定され、VarHandle.compareAndExchange(java.lang.Object...)
で指定されたメモリー効果が適用されます。final V
compareAndExchangeAcquire
(V expectedValue, V newValue) 「証人の価値」、== expectedValue
と呼ばれる現在の値がnewValue
に原子的に設定され、VarHandle.compareAndExchangeAcquire(java.lang.Object...)
で指定されたメモリー効果が適用されます。final V
compareAndExchangeRelease
(V expectedValue, V newValue) 「証人の価値」、== expectedValue
と呼ばれる現在の値がnewValue
に原子的に設定され、VarHandle.compareAndExchangeRelease(java.lang.Object...)
で指定されたメモリー効果が適用されます。final boolean
compareAndSet
(V expectedValue, V newValue) 現在の値== expectedValue
がnewValue
に値を原子的に設定します。VarHandle.compareAndSet(java.lang.Object...)
で指定されたメモリー効果があります。final V
get()
VarHandle.getVolatile(java.lang.Object...)
で指定されたメモリー効果を持つ現在の値を返します。final V
VarHandle.getAcquire(java.lang.Object...)
で指定されたメモリー効果を持つ現在の値を返します。final V
getAndAccumulate
(V x, BinaryOperator<V> accumulatorFunction) 現在の値を現在の値と与えられた値に適用した結果を元に戻し、前の値を返すことで、現在の値を原子的に更新します。final V
この値を原子的にnewValue
に設定し、VarHandle.getAndSet(java.lang.Object...)
で指定されたメモリー効果で古い値を返します。final V
getAndUpdate
(UnaryOperator<V> updateFunction) 指定された関数を適用した結果で現在の値を原子的に更新し、前の値を返します。final V
VarHandle.getOpaque(java.lang.Object...)
で指定されたメモリー効果を持つ現在の値を返します。final V
getPlain()
変数が非volatile
と宣言されているかのように、読み込みのメモリー・セマンティクスを持つ現在の値を返します。final void
値をnewValue
に設定し、VarHandle.setRelease(java.lang.Object...)
で指定されたメモリー効果を設定します。final void
値をnewValue
に設定し、VarHandle.setVolatile(java.lang.Object...)
で指定されたメモリー効果を設定します。final void
値をnewValue
に設定し、VarHandle.setOpaque(java.lang.Object...)
で指定されたメモリー効果を設定します。final void
値がnewValue
に設定され、変数が非volatile
および非final
として宣言されているかのように設定されたメモリー・セマンティクスが使用されます。final void
setRelease
(V newValue) 値をnewValue
に設定し、VarHandle.setRelease(java.lang.Object...)
で指定されたメモリー効果を設定します。toString()
現在値の文字列表記を返します。final V
updateAndGet
(UnaryOperator<V> updateFunction) 指定された関数を適用した結果を現在の値に原子的に更新し、更新された値を返します。final boolean
weakCompareAndSet
(V expectedValue, V newValue) 非推奨。final boolean
weakCompareAndSetAcquire
(V expectedValue, V newValue) おそらくnewValue
に値を原子的に設定します。現在の値== expectedValue
の場合は、VarHandle.weakCompareAndSetAcquire(java.lang.Object...)
で指定されたメモリー効果が適用されます。final boolean
weakCompareAndSetPlain
(V expectedValue, V newValue) おそらくnewValue
に値を原子的に設定します。現在の値== expectedValue
の場合は、VarHandle.weakCompareAndSetPlain(java.lang.Object...)
で指定されたメモリー効果が適用されます。final boolean
weakCompareAndSetRelease
(V expectedValue, V newValue) おそらくnewValue
に値を原子的に設定します。現在の値== expectedValue
の場合は、VarHandle.weakCompareAndSetRelease(java.lang.Object...)
で指定されたメモリー効果が適用されます。final boolean
weakCompareAndSetVolatile
(V expectedValue, V newValue) おそらくnewValue
に値を原子的に設定します。現在の値== expectedValue
の場合は、VarHandle.weakCompareAndSet(java.lang.Object...)
で指定されたメモリー効果が適用されます。
-
コンストラクタの詳細
-
AtomicReference
public AtomicReference(V initialValue) 指定された初期パラメータを使って、新しいAtomicReferenceを作成します。- パラメータ:
initialValue
- 初期値
-
AtomicReference
public AtomicReference()初期値nullを使って、新しいAtomicReferenceを作成します。
-
-
メソッドの詳細
-
get
public final V get()VarHandle.getVolatile(java.lang.Object...)
で指定されたメモリー効果を持つ現在の値を返します。- 戻り値:
- 現行値
-
set
public final void set(V newValue) 値をnewValue
に設定し、VarHandle.setVolatile(java.lang.Object...)
で指定されたメモリー効果を設定します。- パラメータ:
newValue
- 新しい値
-
lazySet
public final void lazySet(V newValue) 値をnewValue
に設定し、VarHandle.setRelease(java.lang.Object...)
で指定されたメモリー効果を設定します。- パラメータ:
newValue
- 新しい値- 導入されたバージョン:
- 1.6
-
compareAndSet
現在の値== expectedValue
がnewValue
に値を原子的に設定します。VarHandle.compareAndSet(java.lang.Object...)
で指定されたメモリー効果があります。- パラメータ:
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)
メソッドを使用することをお勧めします。おそらくnewValue
に値を原子的に設定します。現在の値== expectedValue
の場合は、VarHandle.weakCompareAndSetPlain(java.lang.Object...)
で指定されたメモリー効果が適用されます。- パラメータ:
expectedValue
- 期待値newValue
- 新しい値- 戻り値:
- 成功した場合は
true
- 関連項目:
-
weakCompareAndSetPlain
おそらくnewValue
に値を原子的に設定します。現在の値== expectedValue
の場合は、VarHandle.weakCompareAndSetPlain(java.lang.Object...)
で指定されたメモリー効果が適用されます。- パラメータ:
expectedValue
- 期待値newValue
- 新しい値- 戻り値:
- 成功した場合は
true
- 導入されたバージョン:
- 9
-
getAndSet
この値を原子的にnewValue
に設定し、VarHandle.getAndSet(java.lang.Object...)
で指定されたメモリー効果で古い値を返します。- パラメータ:
newValue
- 新しい値- 戻り値:
- 前の値
-
getAndUpdate
public final V getAndUpdate(UnaryOperator<V> updateFunction) 指定された関数を適用した結果で現在の値を原子的に更新し、前の値を返します。 関数は、試行した更新がスレッド間の競合のため失敗したときに再度適用される可能性があるため、副作用を持つべきではありません。- パラメータ:
updateFunction
- 副作用のない関数- 戻り値:
- 前の値
- 導入されたバージョン:
- 1.8
-
updateAndGet
public final V updateAndGet(UnaryOperator<V> updateFunction) 指定された関数を適用した結果を現在の値に原子的に更新し、更新された値を返します。 関数は、試行した更新がスレッド間の競合のため失敗したときに再度適用される可能性があるため、副作用を持つべきではありません。- パラメータ:
updateFunction
- 副作用のない関数- 戻り値:
- 更新された値
- 導入されたバージョン:
- 1.8
-
getAndAccumulate
public final V getAndAccumulate(V x, BinaryOperator<V> accumulatorFunction) 現在の値を現在の値と与えられた値に適用した結果を元に戻し、前の値を返すことで、現在の値を原子的に更新します。 関数は、試行した更新がスレッド間の競合のため失敗したときに再度適用される可能性があるため、副作用を持つべきではありません。 関数は、現在の値を第1引数とし、指定された更新値を第2引数として適用されます。- パラメータ:
x
- 更新値accumulatorFunction
- 2つの引数を取る、副作用のない関数- 戻り値:
- 前の値
- 導入されたバージョン:
- 1.8
-
accumulateAndGet
public final V accumulateAndGet(V x, BinaryOperator<V> accumulatorFunction) 現在の値を現在の値と指定された値に適用した結果を原子的に更新し、更新された値を返します。 関数は、試行した更新がスレッド間の競合のため失敗したときに再度適用される可能性があるため、副作用を持つべきではありません。 関数は、現在の値を第1引数とし、指定された更新値を第2引数として適用されます。- パラメータ:
x
- 更新値accumulatorFunction
- 2つの引数を取る、副作用のない関数- 戻り値:
- 更新された値
- 導入されたバージョン:
- 1.8
-
toString
public String toString()現在値の文字列表記を返します。 -
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(java.lang.Object...)
で指定されたメモリー効果を持つ現在の値を返します。- 戻り値:
- 値
- 導入されたバージョン:
- 9
-
setOpaque
public final void setOpaque(V newValue) 値をnewValue
に設定し、VarHandle.setOpaque(java.lang.Object...)
で指定されたメモリー効果を設定します。- パラメータ:
newValue
- 新しい値- 導入されたバージョン:
- 9
-
getAcquire
public final V getAcquire()VarHandle.getAcquire(java.lang.Object...)
で指定されたメモリー効果を持つ現在の値を返します。- 戻り値:
- 値
- 導入されたバージョン:
- 9
-
setRelease
public final void setRelease(V newValue) 値をnewValue
に設定し、VarHandle.setRelease(java.lang.Object...)
で指定されたメモリー効果を設定します。- パラメータ:
newValue
- 新しい値- 導入されたバージョン:
- 9
-
compareAndExchange
「証人の価値」、== expectedValue
と呼ばれる現在の値がnewValue
に原子的に設定され、VarHandle.compareAndExchange(java.lang.Object...)
で指定されたメモリー効果が適用されます。- パラメータ:
expectedValue
- 期待値newValue
- 新しい値- 戻り値:
- 目撃者の価値は、成功した場合の期待値と同じです
- 導入されたバージョン:
- 9
-
compareAndExchangeAcquire
「証人の価値」、== expectedValue
と呼ばれる現在の値がnewValue
に原子的に設定され、VarHandle.compareAndExchangeAcquire(java.lang.Object...)
で指定されたメモリー効果が適用されます。- パラメータ:
expectedValue
- 期待値newValue
- 新しい値- 戻り値:
- 目撃者の価値は、成功した場合の期待値と同じです
- 導入されたバージョン:
- 9
-
compareAndExchangeRelease
「証人の価値」、== expectedValue
と呼ばれる現在の値がnewValue
に原子的に設定され、VarHandle.compareAndExchangeRelease(java.lang.Object...)
で指定されたメモリー効果が適用されます。- パラメータ:
expectedValue
- 期待値newValue
- 新しい値- 戻り値:
- 目撃者の価値は、成功した場合の期待値と同じです
- 導入されたバージョン:
- 9
-
weakCompareAndSetVolatile
おそらくnewValue
に値を原子的に設定します。現在の値== expectedValue
の場合は、VarHandle.weakCompareAndSet(java.lang.Object...)
で指定されたメモリー効果が適用されます。- パラメータ:
expectedValue
- 期待値newValue
- 新しい値- 戻り値:
- 成功した場合は
true
- 導入されたバージョン:
- 9
-
weakCompareAndSetAcquire
おそらくnewValue
に値を原子的に設定します。現在の値== expectedValue
の場合は、VarHandle.weakCompareAndSetAcquire(java.lang.Object...)
で指定されたメモリー効果が適用されます。- パラメータ:
expectedValue
- 期待値newValue
- 新しい値- 戻り値:
- 成功した場合は
true
- 導入されたバージョン:
- 9
-
weakCompareAndSetRelease
おそらくnewValue
に値を原子的に設定します。現在の値== expectedValue
の場合は、VarHandle.weakCompareAndSetRelease(java.lang.Object...)
で指定されたメモリー効果が適用されます。- パラメータ:
expectedValue
- 期待値newValue
- 新しい値- 戻り値:
- 成功した場合は
true
- 導入されたバージョン:
- 9
-
compareAndExchange(V, V)
やcompareAndSet(V, V)
などのメソッドを参照してください)を意味します。