java.lang.Object
java.util.concurrent.atomic.AtomicReferenceArray<E>
- 型パラメータ:
E- この配列に保持されている要素の基底クラス
- すべての実装されたインタフェース:
Serializable
public class AtomicReferenceArray<E> extends Object implements Serializable
要素を原子的に更新可能なオブジェクト参照の配列です。 アトミック・アクセスのプロパティについては、
VarHandle仕様を参照してください。 - 導入されたバージョン:
- 1.5
- 関連項目:
- 直列化された形式
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 AtomicReferenceArray(int length)指定された長さの新しいAtomicReferenceArrayを作成し、すべての要素はゼロに初期化されます。AtomicReferenceArray(E[] array)指定された配列と同じ長さのAtomicReferenceArrayを新しく作成します。すべての要素は、指定された配列からコピーされます。 -
メソッドのサマリー
修飾子と型 メソッド 説明 EaccumulateAndGet(int i, E x, BinaryOperator<E> accumulatorFunction)インデックスiの要素を現在の値と指定された値に適用した結果を原子的に更新し、更新された値を返します。EcompareAndExchange(int i, E expectedValue, E newValue)要素の現在値(「証人の価値」、== expectedValueと呼ばれ、VarHandle.compareAndExchange(java.lang.Object...)で指定されたメモリー効果を持つ要素)があれば、要素iの要素をnewValueに原子的に設定します。EcompareAndExchangeAcquire(int i, E expectedValue, E newValue)要素の現在値(「証人の価値」、== expectedValueと呼ばれ、VarHandle.compareAndExchangeAcquire(java.lang.Object...)で指定されたメモリー効果を持つ要素)があれば、要素iの要素をnewValueに原子的に設定します。EcompareAndExchangeRelease(int i, E expectedValue, E newValue)要素の現在値(「証人の価値」、== expectedValueと呼ばれ、VarHandle.compareAndExchangeRelease(java.lang.Object...)で指定されたメモリー効果を持つ要素)があれば、要素iの要素をnewValueに原子的に設定します。booleancompareAndSet(int i, E expectedValue, E newValue)要素の現在値== expectedValueがVarHandle.compareAndSet(java.lang.Object...)で指定されたメモリー効果を持つ場合、要素iの要素を原子的にnewValueに原子的に設定します。Eget(int i)インデックスiの要素の現在の値をVarHandle.getVolatile(java.lang.Object...)で指定されたメモリー効果で返します。EgetAcquire(int i)インデックスiの要素の現在の値をVarHandle.getAcquire(java.lang.Object...)で指定されたメモリー効果で返します。EgetAndAccumulate(int i, E x, BinaryOperator<E> accumulatorFunction)インデックスiの要素を現在の値と与えられた値に適用した結果を原子的に更新し、前の値を返します。EgetAndSet(int i, E newValue)インデックスiの要素を原子的にnewValueに設定し、VarHandle.getAndSet(java.lang.Object...)で指定されたメモリー効果を持つ古い値を返します。EgetAndUpdate(int i, UnaryOperator<E> updateFunction)インデックスiの要素を、指定された関数を適用した結果に原子的に更新し、前の値を返します。EgetOpaque(int i)インデックスiの要素の現在の値をVarHandle.getOpaque(java.lang.Object...)で指定されたメモリー効果で返します。EgetPlain(int i)インデックスiにある要素の現在の値を返します。変数が非volatileと宣言されているかのように、読み込みのメモリー・セマンティクスを持ちます。voidlazySet(int i, E newValue)iの要素をnewValueに設定し、VarHandle.setRelease(java.lang.Object...)で指定されたメモリー効果を設定します。intlength()配列の長さを返します。voidset(int i, E newValue)iの要素をnewValueに設定し、VarHandle.setVolatile(java.lang.Object...)で指定されたメモリー効果を設定します。voidsetOpaque(int i, E newValue)iの要素をnewValueに設定し、VarHandle.setOpaque(java.lang.Object...)で指定されたメモリー効果を設定します。voidsetPlain(int i, E newValue)インデックスiの要素をnewValueに設定し、変数が非volatileおよび非finalとして宣言されているかのように設定するメモリー・セマンティクスを設定します。voidsetRelease(int i, E newValue)iの要素をnewValueに設定し、VarHandle.setRelease(java.lang.Object...)で指定されたメモリー効果を設定します。StringtoString()配列の現在値の文字列表現を返します。EupdateAndGet(int i, UnaryOperator<E> updateFunction)インデックスiの要素を、指定された関数を適用した結果に原子的に更新し、更新された値を返します。booleanweakCompareAndSet(int i, E expectedValue, E newValue)非推奨。このメソッドは単純なメモリー効果を持ちますが、メソッド名は揮発性メモリー効果(compareAndExchange(int, E, E)やcompareAndSet(int, E, E)などのメソッドを参照してください)を意味します。booleanweakCompareAndSetAcquire(int i, E expectedValue, E newValue)要素の現在値== expectedValueがVarHandle.weakCompareAndSetAcquire(java.lang.Object...)で指定されたメモリー効果を持つ場合、インデックスiの要素をnewValueに原子的にアトミックに設定します。booleanweakCompareAndSetPlain(int i, E expectedValue, E newValue)要素の現在値== expectedValueがVarHandle.weakCompareAndSetPlain(java.lang.Object...)で指定されたメモリー効果を持つ場合、インデックスiの要素をnewValueに原子的にアトミックに設定します。booleanweakCompareAndSetRelease(int i, E expectedValue, E newValue)要素の現在値== expectedValueがVarHandle.weakCompareAndSetRelease(java.lang.Object...)で指定されたメモリー効果を持つ場合、インデックスiの要素をnewValueに原子的にアトミックに設定します。booleanweakCompareAndSetVolatile(int i, E expectedValue, E newValue)要素の現在値== expectedValueがVarHandle.weakCompareAndSet(java.lang.Object...)で指定されたメモリー効果を持つ場合、インデックスiの要素をnewValueに原子的にアトミックに設定します。
-
コンストラクタの詳細
-
AtomicReferenceArray
public AtomicReferenceArray(int length)指定された長さの新しいAtomicReferenceArrayを作成し、すべての要素はゼロに初期化されます。- パラメータ:
length- 配列の長さ
-
AtomicReferenceArray
public AtomicReferenceArray(E[] array)指定された配列と同じ長さのAtomicReferenceArrayを新しく作成します。すべての要素は、指定された配列からコピーされます。- パラメータ:
array- 要素のコピー元の配列- 例外:
NullPointerException- 配列がnullの場合
-
-
メソッドの詳細
-
length
public final int length()配列の長さを返します。- 戻り値:
- 配列の長さ
-
get
public final E get(int i)インデックスiの要素の現在の値をVarHandle.getVolatile(java.lang.Object...)で指定されたメモリー効果で返します。- パラメータ:
i- インデックス- 戻り値:
- 現行値
-
set
public final void set(int i, E newValue)iの要素をnewValueに設定し、VarHandle.setVolatile(java.lang.Object...)で指定されたメモリー効果を設定します。- パラメータ:
i- インデックスnewValue- 新しい値
-
lazySet
public final void lazySet(int i, E newValue)iの要素をnewValueに設定し、VarHandle.setRelease(java.lang.Object...)で指定されたメモリー効果を設定します。- パラメータ:
i- インデックスnewValue- 新しい値- 導入されたバージョン:
- 1.6
-
getAndSet
インデックスiの要素を原子的にnewValueに設定し、VarHandle.getAndSet(java.lang.Object...)で指定されたメモリー効果を持つ古い値を返します。- パラメータ:
i- インデックスnewValue- 新しい値- 戻り値:
- 前の値
-
compareAndSet
要素の現在値== expectedValueがVarHandle.compareAndSet(java.lang.Object...)で指定されたメモリー効果を持つ場合、要素iの要素を原子的にnewValueに原子的に設定します。- パラメータ:
i- インデックスexpectedValue- 期待値newValue- 新しい値- 戻り値:
- 成功した場合は
truefalseは、実際の値が予想される値と等価ではないことを示す。
-
weakCompareAndSet
@Deprecated(since="9")public final boolean weakCompareAndSet(int i, E expectedValue, E newValue)非推奨。このメソッドは単純なメモリー効果を持ちますが、メソッド名は揮発性メモリー効果(compareAndExchange(int, E, E)やcompareAndSet(int, E, E)などのメソッドを参照してください)を意味します。 プレーンまたは揮発性メモリー効果の混乱を避けるために、代わりにweakCompareAndSetPlain(int, E, E)メソッドを使用することをお勧めします。要素の現在値== expectedValueがVarHandle.weakCompareAndSetPlain(java.lang.Object...)で指定されたメモリー効果を持つ場合、インデックスiの要素をnewValueに原子的にアトミックに設定します。- パラメータ:
i- インデックスexpectedValue- 期待値newValue- 新しい値- 戻り値:
- 成功した場合は
true - 関連項目:
weakCompareAndSetPlain(int, E, E)
-
weakCompareAndSetPlain
要素の現在値== expectedValueがVarHandle.weakCompareAndSetPlain(java.lang.Object...)で指定されたメモリー効果を持つ場合、インデックスiの要素をnewValueに原子的にアトミックに設定します。- パラメータ:
i- インデックスexpectedValue- 期待値newValue- 新しい値- 戻り値:
- 成功した場合は
true - 導入されたバージョン:
- 9
-
getAndUpdate
public final E getAndUpdate(int i, UnaryOperator<E> updateFunction)インデックスiの要素を、指定された関数を適用した結果に原子的に更新し、前の値を返します。 関数は、試行した更新がスレッド間の競合のため失敗したときに再度適用される可能性があるため、副作用を持つべきではありません。- パラメータ:
i- インデックスupdateFunction- 副作用のない関数- 戻り値:
- 前の値
- 導入されたバージョン:
- 1.8
-
updateAndGet
public final E updateAndGet(int i, UnaryOperator<E> updateFunction)インデックスiの要素を、指定された関数を適用した結果に原子的に更新し、更新された値を返します。 関数は、試行した更新がスレッド間の競合のため失敗したときに再度適用される可能性があるため、副作用を持つべきではありません。- パラメータ:
i- インデックスupdateFunction- 副作用のない関数- 戻り値:
- 更新された値
- 導入されたバージョン:
- 1.8
-
getAndAccumulate
public final E getAndAccumulate(int i, E x, BinaryOperator<E> accumulatorFunction)インデックスiの要素を現在の値と与えられた値に適用した結果を原子的に更新し、前の値を返します。 関数は、試行した更新がスレッド間の競合のため失敗したときに再度適用される可能性があるため、副作用を持つべきではありません。 関数は、その最初の引数としてインデックスにある要素の電流値i、及び第二引数として与えられた更新に適用されます。- パラメータ:
i- インデックスx- 更新値accumulatorFunction- 2つの引数を取る、副作用のない関数- 戻り値:
- 前の値
- 導入されたバージョン:
- 1.8
-
accumulateAndGet
public final E accumulateAndGet(int i, E x, BinaryOperator<E> accumulatorFunction)インデックスiの要素を現在の値と指定された値に適用した結果を原子的に更新し、更新された値を返します。 関数は、試行した更新がスレッド間の競合のため失敗したときに再度適用される可能性があるため、副作用を持つべきではありません。 関数は、その最初の引数としてインデックスにある要素の電流値i、及び第二引数として与えられた更新に適用されます。- パラメータ:
i- インデックスx- 更新値accumulatorFunction- 2つの引数を取る、副作用のない関数- 戻り値:
- 更新された値
- 導入されたバージョン:
- 1.8
-
toString
public String toString()配列の現在値の文字列表現を返します。 -
getPlain
public final E getPlain(int i)インデックスiにある要素の現在の値を返します。変数が非volatileと宣言されているかのように、読み込みのメモリー・セマンティクスを持ちます。- パラメータ:
i- インデックス- 戻り値:
- 値
- 導入されたバージョン:
- 9
-
setPlain
public final void setPlain(int i, E newValue)インデックスiの要素をnewValueに設定し、変数が非volatileおよび非finalとして宣言されているかのように設定するメモリー・セマンティクスを設定します。- パラメータ:
i- インデックスnewValue- 新しい値- 導入されたバージョン:
- 9
-
getOpaque
public final E getOpaque(int i)インデックスiの要素の現在の値をVarHandle.getOpaque(java.lang.Object...)で指定されたメモリー効果で返します。- パラメータ:
i- インデックス- 戻り値:
- 値
- 導入されたバージョン:
- 9
-
setOpaque
public final void setOpaque(int i, E newValue)iの要素をnewValueに設定し、VarHandle.setOpaque(java.lang.Object...)で指定されたメモリー効果を設定します。- パラメータ:
i- インデックスnewValue- 新しい値- 導入されたバージョン:
- 9
-
getAcquire
public final E getAcquire(int i)インデックスiの要素の現在の値をVarHandle.getAcquire(java.lang.Object...)で指定されたメモリー効果で返します。- パラメータ:
i- インデックス- 戻り値:
- 値
- 導入されたバージョン:
- 9
-
setRelease
public final void setRelease(int i, E newValue)iの要素をnewValueに設定し、VarHandle.setRelease(java.lang.Object...)で指定されたメモリー効果を設定します。- パラメータ:
i- インデックスnewValue- 新しい値- 導入されたバージョン:
- 9
-
compareAndExchange
要素の現在値(「証人の価値」、== expectedValueと呼ばれ、VarHandle.compareAndExchange(java.lang.Object...)で指定されたメモリー効果を持つ要素)があれば、要素iの要素をnewValueに原子的に設定します。- パラメータ:
i- インデックスexpectedValue- 期待値newValue- 新しい値- 戻り値:
- 目撃者の価値は、成功した場合の期待値と同じです
- 導入されたバージョン:
- 9
-
compareAndExchangeAcquire
要素の現在値(「証人の価値」、== expectedValueと呼ばれ、VarHandle.compareAndExchangeAcquire(java.lang.Object...)で指定されたメモリー効果を持つ要素)があれば、要素iの要素をnewValueに原子的に設定します。- パラメータ:
i- インデックスexpectedValue- 期待値newValue- 新しい値- 戻り値:
- 目撃者の価値は、成功した場合の期待値と同じです
- 導入されたバージョン:
- 9
-
compareAndExchangeRelease
要素の現在値(「証人の価値」、== expectedValueと呼ばれ、VarHandle.compareAndExchangeRelease(java.lang.Object...)で指定されたメモリー効果を持つ要素)があれば、要素iの要素をnewValueに原子的に設定します。- パラメータ:
i- インデックスexpectedValue- 期待値newValue- 新しい値- 戻り値:
- 目撃者の価値は、成功した場合の期待値と同じです
- 導入されたバージョン:
- 9
-
weakCompareAndSetVolatile
要素の現在値== expectedValueがVarHandle.weakCompareAndSet(java.lang.Object...)で指定されたメモリー効果を持つ場合、インデックスiの要素をnewValueに原子的にアトミックに設定します。- パラメータ:
i- インデックスexpectedValue- 期待値newValue- 新しい値- 戻り値:
- 成功した場合は
true - 導入されたバージョン:
- 9
-
weakCompareAndSetAcquire
要素の現在値== expectedValueがVarHandle.weakCompareAndSetAcquire(java.lang.Object...)で指定されたメモリー効果を持つ場合、インデックスiの要素をnewValueに原子的にアトミックに設定します。- パラメータ:
i- インデックスexpectedValue- 期待値newValue- 新しい値- 戻り値:
- 成功した場合は
true - 導入されたバージョン:
- 9
-
weakCompareAndSetRelease
要素の現在値== expectedValueがVarHandle.weakCompareAndSetRelease(java.lang.Object...)で指定されたメモリー効果を持つ場合、インデックスiの要素をnewValueに原子的にアトミックに設定します。- パラメータ:
i- インデックスexpectedValue- 期待値newValue- 新しい値- 戻り値:
- 成功した場合は
true - 導入されたバージョン:
- 9
-