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