- 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 方法 描述 long
accumulateAndGet(int i, long x, LongBinaryOperator accumulatorFunction)
将索引号为i
的元素进行原子更新(具有VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果),并将给定的函数应用于当前值和给定值,返回更新后的值。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...)
指定的记忆效应,== expectedValue
索引i
为newValue
的元素原子设置为 newValue 。long
compareAndExchangeAcquire(int i, long expectedValue, long newValue)
如果元素的当前值(称为 见证值== expectedValue
)具有由VarHandle.compareAndExchangeAcquire(java.lang.Object...)
指定的记忆效应,== expectedValue
索引i
为newValue
的元素原子设置为 newValue 。long
compareAndExchangeRelease(int i, long expectedValue, long newValue)
如果元素的当前值(称为 见证值== expectedValue
)具有由VarHandle.compareAndExchangeRelease(java.lang.Object...)
指定的记忆效应,== expectedValue
索引i
为newValue
的元素原子设置为 newValue 。boolean
compareAndSet(int i, long expectedValue, long newValue)
如果元素的当前值== expectedValue
具有VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果,则将索引i
为newValue
的元素原子设置为 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)
原始更新(具有VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果)索引号为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)
long
getAndUpdate(int i, LongUnaryOperator updateFunction)
用索引号为i
的元素进行原子更新(具有VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果),并使用给定函数的结果返回上一个值。long
getOpaque(int i)
返回索引号为i
的元素的当前值,具有由VarHandle.getOpaque(java.lang.Object...)
指定的内存效果。long
getPlain(int i)
返回索引号为i
的元素的当前值,读取的内存语义就好像变量被声明为非volatile
。long
incrementAndGet(int i)
按照VarHandle.getAndAdd(java.lang.Object...)
指定的记忆效应,原子地增加索引号为i
的元素的值。void
lazySet(int i, long newValue)
int
length()
返回数组的长度。void
set(int i, long newValue)
void
setOpaque(int i, long newValue)
void
setPlain(int i, long newValue)
将索引i
为newValue
的元素设置为newValue
,其内存语义设置为该变量未声明为volatile
,final
。void
setRelease(int i, long newValue)
String
toString()
返回数组的当前值的String表示形式。long
updateAndGet(int i, LongUnaryOperator updateFunction)
使用索引i
的元素与应用给定函数的结果进行原子更新(具有VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果),返回更新的值。boolean
weakCompareAndSet(int i, long expectedValue, long newValue)
已过时。该方法具有简单的记忆效应,但方法名称表示易失性记忆效应(参见方法如compareAndExchange(int, long, long)
和compareAndSet(int, long, long)
)。 为了避免在简单或易失性记忆效应上的混淆,建议使用方法weakCompareAndSetPlain(int, long, long)
。boolean
weakCompareAndSetAcquire(int i, long expectedValue, long newValue)
如果元素的当前值== expectedValue
具有VarHandle.weakCompareAndSetAcquire(java.lang.Object...)
指定的记忆效应,则可以将索引i
为newValue
的元素原子设置为 newValue 。boolean
weakCompareAndSetPlain(int i, long expectedValue, long newValue)
如果元素的当前值为== expectedValue
,具有由VarHandle.weakCompareAndSetPlain(java.lang.Object...)
指定的记忆效应,则可以将索引i
为newValue
的元素原子设置为 newValue 。boolean
weakCompareAndSetRelease(int i, long expectedValue, long newValue)
可能以原子方式设置在索引元件i
到newValue
如果该元素的当前值== expectedValue
如通过指定,记忆效应VarHandle.weakCompareAndSetRelease(java.lang.Object...)
。boolean
weakCompareAndSetVolatile(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
,其内存语义设置为该变量被声明为非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
- 新值 - 从以下版本开始:
- 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
-
-