- java.lang.Object
-
- java.util.concurrent.atomic.AtomicLongArray
-
- All Implemented Interfaces:
-
Serializable
public class AtomicLongArray extends Object implements Serializable
其中元素可以原子更新的long数组。 有关原子访问属性的说明,请参阅VarHandle规范。- 从以下版本开始:
- 1.5
- 另请参见:
- Serialized Form
-
-
构造方法摘要
构造方法 Constructor 描述 AtomicLongArray(int length)创建给定长度的新AtomicLongArray,所有元素最初为零。AtomicLongArray(long[] array)创建一个与原始数组相同长度的新的AtomicLongArray,并复制所有元素。
-
方法摘要
所有方法 接口方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 longaccumulateAndGet(int i, long x, LongBinaryOperator accumulatorFunction)将索引号为i的元素进行原子更新(具有VarHandle.compareAndSet(java.lang.Object...)指定的内存效果),并将给定的函数应用于当前值和给定值,返回更新后的值。longaddAndGet(int i, long delta)原子地将给定的值添加到索引号为i的元素,具有由VarHandle.getAndAdd(java.lang.Object...)指定的记忆效应。longcompareAndExchange(int i, long expectedValue, long newValue)如果元素的当前值(称为 见证值== expectedValue)具有由VarHandle.compareAndExchange(java.lang.Object...)指定的记忆效应,== expectedValue索引i为newValue的元素原子设置为 newValue 。longcompareAndExchangeAcquire(int i, long expectedValue, long newValue)如果元素的当前值(称为 见证值== expectedValue)具有由VarHandle.compareAndExchangeAcquire(java.lang.Object...)指定的记忆效应,== expectedValue索引i为newValue的元素原子设置为 newValue 。longcompareAndExchangeRelease(int i, long expectedValue, long newValue)如果元素的当前值(称为 见证值== expectedValue)具有由VarHandle.compareAndExchangeRelease(java.lang.Object...)指定的记忆效应,== expectedValue索引i为newValue的元素原子设置为 newValue 。booleancompareAndSet(int i, long expectedValue, long newValue)如果元素的当前值== expectedValue具有VarHandle.compareAndSet(java.lang.Object...)指定的内存效果,则将索引i为newValue的元素原子设置为 newValue 。longdecrementAndGet(int i)原子递减元件的索引值i如通过指定,记忆效应VarHandle.getAndAdd(java.lang.Object...)。longget(int i)返回索引号为i的元素的当前值,其记忆效应由VarHandle.getVolatile(java.lang.Object...)指定。longgetAcquire(int i)返回索引号为i的元素的当前值,由VarHandle.getAcquire(java.lang.Object...)指定的内存效果。longgetAndAccumulate(int i, long x, LongBinaryOperator accumulatorFunction)原始更新(具有VarHandle.compareAndSet(java.lang.Object...)指定的内存效果)索引号为i的元素,并将给定函数应用于当前值和给定值,返回上一个值。longgetAndAdd(int i, long delta)原子地将给定的值添加到索引号为i的元素,具有由VarHandle.getAndAdd(java.lang.Object...)指定的记忆效应。longgetAndDecrement(int i)原子递减元件的索引值i如通过指定,记忆效应VarHandle.getAndAdd(java.lang.Object...)。longgetAndIncrement(int i)原子递增元件的索引值i如通过指定,记忆效应VarHandle.getAndAdd(java.lang.Object...)。longgetAndSet(int i, long newValue)longgetAndUpdate(int i, LongUnaryOperator updateFunction)用索引号为i的元素进行原子更新(具有VarHandle.compareAndSet(java.lang.Object...)指定的内存效果),并使用给定函数的结果返回上一个值。longgetOpaque(int i)返回索引号为i的元素的当前值,具有由VarHandle.getOpaque(java.lang.Object...)指定的内存效果。longgetPlain(int i)返回索引号为i的元素的当前值,读取的内存语义就好像变量被声明为非volatile。longincrementAndGet(int i)按照VarHandle.getAndAdd(java.lang.Object...)指定的记忆效应,原子地增加索引号为i的元素的值。voidlazySet(int i, long newValue)intlength()返回数组的长度。voidset(int i, long newValue)voidsetOpaque(int i, long newValue)voidsetPlain(int i, long newValue)将索引i为newValue的元素设置为newValue,其内存语义设置为该变量未声明为volatile,final。voidsetRelease(int i, long newValue)StringtoString()返回数组的当前值的String表示形式。longupdateAndGet(int i, LongUnaryOperator updateFunction)使用索引i的元素与应用给定函数的结果进行原子更新(具有VarHandle.compareAndSet(java.lang.Object...)指定的内存效果),返回更新的值。booleanweakCompareAndSet(int i, long expectedValue, long newValue)已过时。该方法具有简单的记忆效应,但方法名称表示易失性记忆效应(参见方法如compareAndExchange(int, long, long)和compareAndSet(int, long, long))。 为了避免在简单或易失性记忆效应上的混淆,建议使用方法weakCompareAndSetPlain(int, long, long)。booleanweakCompareAndSetAcquire(int i, long expectedValue, long newValue)如果元素的当前值== expectedValue具有VarHandle.weakCompareAndSetAcquire(java.lang.Object...)指定的记忆效应,则可以将索引i为newValue的元素原子设置为 newValue 。booleanweakCompareAndSetPlain(int i, long expectedValue, long newValue)如果元素的当前值为== expectedValue,具有由VarHandle.weakCompareAndSetPlain(java.lang.Object...)指定的记忆效应,则可以将索引i为newValue的元素原子设置为 newValue 。booleanweakCompareAndSetRelease(int i, long expectedValue, long newValue)可能以原子方式设置在索引元件i到newValue如果该元素的当前值== expectedValue如通过指定,记忆效应VarHandle.weakCompareAndSetRelease(java.lang.Object...)。booleanweakCompareAndSetVolatile(int i, long expectedValue, long newValue)如果元素的当前值为== expectedValue,具有由VarHandle.weakCompareAndSet(java.lang.Object...)指定的记忆效应,则可以将索引i为newValue的元素原子设置为 newValue 。
-
-
-
构造方法详细信息
-
AtomicLongArray
public AtomicLongArray(int length)
创建给定长度的新AtomicLongArray,所有元素最初为零。- 参数
-
length- 数组的长度
-
AtomicLongArray
public AtomicLongArray(long[] array)
创建一个与原始数组相同长度的新的AtomicLongArray,并复制所有元素。- 参数
-
array- 从中复制元素的数组 - 异常
-
NullPointerException- 如果数组为空
-
-
方法详细信息
-
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- 新价值
-
lazySet
public final void lazySet(int i, long newValue)- 参数
-
i- 索引 -
newValue- 新值 - 从以下版本开始:
- 1.6
-
getAndSet
public final long getAndSet(int i, long newValue)- 参数
-
i- 索引 -
newValue- 新值 - 结果
- 以前的值
-
compareAndSet
public final boolean compareAndSet(int i, long expectedValue, long newValue)如果元素的当前值== expectedValue具有VarHandle.compareAndSet(java.lang.Object...)指定的内存效果,则将索引i为newValue的元素原子设置为 newValue 。- 参数
-
i- 索引 -
expectedValue- 预期值 -
newValue- 新值 - 结果
-
true如果成功。 False return表示实际值不等于预期值。
-
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的元素原子设置为 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的元素原子设置为 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的元素与应用给定函数的结果进行原子更新(具有VarHandle.compareAndSet(java.lang.Object...)指定的内存效果),返回上一个值。 该功能应该是无副作用的,因为尝试的更新由于线程之间的争用而失败时可能会被重新应用。- 参数
-
i- 索引 -
updateFunction- 无副作用的功能 - 结果
- 以前的值
- 从以下版本开始:
- 1.8
-
updateAndGet
public final long updateAndGet(int i, LongUnaryOperator updateFunction)使用索引i的元素与应用给定函数的结果进行原子更新(具有VarHandle.compareAndSet(java.lang.Object...)指定的内存效果),返回更新的值。 该功能应该是无副作用的,因为尝试的更新由于线程之间的争用而失败时可能会被重新应用。- 参数
-
i- 索引 -
updateFunction- 无副作用的功能 - 结果
- 更新的值
- 从以下版本开始:
- 1.8
-
getAndAccumulate
public final long getAndAccumulate(int i, long x, LongBinaryOperator accumulatorFunction)原子更新(具有VarHandle.compareAndSet(java.lang.Object...)指定的内存效应)索引号为i的元素,并将给定函数应用于当前值和给定值,返回上一个值。 该功能应该是无副作用的,因为尝试的更新由于线程之间的争用而失败时可能会被重新应用。 该函数以索引i作为其第一个参数的元素的当前值应用,给定更新作为第二个参数。- 参数
-
i- 索引 -
x- 更新值 -
accumulatorFunction- 两个参数的无效副作用 - 结果
- 以前的值
- 从以下版本开始:
- 1.8
-
accumulateAndGet
public final long accumulateAndGet(int i, long x, LongBinaryOperator accumulatorFunction)将索引号为i的元素原子更新(由VarHandle.compareAndSet(java.lang.Object...)指定的内存效果),并将给定的函数应用于当前值和给定值,返回更新后的值。 该功能应该是无副作用的,因为尝试的更新由于线程之间的争用而失败时可能会被重新应用。 该函数应用索引i为i的元素的当前值作为其第一个参数,给定更新作为第二个参数。- 参数
-
i- 指数 -
x- 更新值 -
accumulatorFunction- 两个参数的无效副作用 - 结果
- 更新的值
- 从以下版本开始:
- 1.8
-
getPlain
public final long getPlain(int i)
返回索引号为i的元素的当前值,读取的内存语义就好像变量被声明为非volatile。- 参数
-
i- 指数 - 结果
- 价值
- 从以下版本开始:
- 9
-
setPlain
public final void setPlain(int i, long newValue)将索引i为newValue的元素设置为newValue,其内存语义设置为该变量被声明为非volatilefinal。- 参数
-
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- 新值 - 从以下版本开始:
- 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- 新值 - 从以下版本开始:
- 9
-
compareAndExchange
public final long compareAndExchange(int i, long expectedValue, long newValue)如果元素的当前值,被称为 见证值== expectedValue,具有由VarHandle.compareAndExchange(java.lang.Object...)指定的记忆效应,== expectedValue索引i为newValue的元素原子设置为 i 。- 参数
-
i- 索引 -
expectedValue- 期望值 -
newValue- 新值 - 结果
- 见证价值,如果成功,将与预期价值相同
- 从以下版本开始:
- 9
-
compareAndExchangeAcquire
public final long compareAndExchangeAcquire(int i, long expectedValue, long newValue)如果元素的当前值,称为 见证值== expectedValue,具有由VarHandle.compareAndExchangeAcquire(java.lang.Object...)指定的记忆效应,== expectedValue索引i为newValue的元素原子设置为 newValue 。- 参数
-
i- 索引 -
expectedValue- 预期值 -
newValue- 新值 - 结果
- 见证价值,如果成功,将与预期价值相同
- 从以下版本开始:
- 9
-
compareAndExchangeRelease
public final long compareAndExchangeRelease(int i, long expectedValue, long newValue)如果元素的当前值(称为 见证值== expectedValue)具有由VarHandle.compareAndExchangeRelease(java.lang.Object...)指定的记忆效应,== expectedValue索引i为newValue的元素原子设置为 newValue 。- 参数
-
i- 索引 -
expectedValue- 期望值 -
newValue- 新值 - 结果
- 见证价值,如果成功,将与预期价值相同
- 从以下版本开始:
- 9
-
weakCompareAndSetVolatile
public final boolean weakCompareAndSetVolatile(int i, long expectedValue, long newValue)如果元素的当前值为== expectedValue,具有VarHandle.weakCompareAndSet(java.lang.Object...)指定的记忆效应,则可以将索引i为newValue的元素原子设置为 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的元素设置为 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的元素原子地设置为 newValue 。- 参数
-
i- 索引 -
expectedValue- 期望值 -
newValue- 新值 - 结果
-
true如果成功 - 从以下版本开始:
- 9
-
-