java.lang.Object
java.util.concurrent.atomic.AtomicIntegerArray
- 所有已实现的接口:
-
Serializable
一个可以原子方式更新元素的
int
数组。查看VarHandle
规范以了解原子访问的属性描述。
- 自 JDK 版本:
- 1.5
- 参见:
-
Constructor Summary
ConstructorDescriptionAtomicIntegerArray
(int length) 创建一个给定长度的新AtomicIntegerArray,所有元素初始值为零。AtomicIntegerArray
(int[] array) 创建一个新的AtomicIntegerArray,其长度与给定数组相同,并且所有元素都从给定数组复制而来。 -
Method Summary
Modifier and TypeMethodDescriptionfinal int
accumulateAndGet
(int i, int x, IntBinaryOperator accumulatorFunction) 原子方式更新(根据VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果)索引为i
的元素,结果为将给定函数应用于当前值和给定值的结果,返回更新后的值。final int
addAndGet
(int i, int delta) 原子方式将给定值添加到索引为i
的元素中,内存效果由VarHandle.getAndAdd(java.lang.Object...)
指定。final int
compareAndExchange
(int i, int expectedValue, int newValue) 如果元素的当前值(称为见证值)== 期望值
,则原子方式将索引为i
的元素设置为newValue
,内存效果由VarHandle.compareAndExchange(java.lang.Object...)
指定。final int
compareAndExchangeAcquire
(int i, int expectedValue, int newValue) 如果元素的当前值(称为见证值)== 期望值
,则原子方式将索引为i
的元素设置为newValue
,内存效果由VarHandle.compareAndExchangeAcquire(java.lang.Object...)
指定。final int
compareAndExchangeRelease
(int i, int expectedValue, int newValue) 如果元素的当前值(称为见证值)== 期望值
,则原子方式将索引为i
的元素设置为newValue
,内存效果由VarHandle.compareAndExchangeRelease(java.lang.Object...)
指定。final boolean
compareAndSet
(int i, int expectedValue, int newValue) final int
decrementAndGet
(int i) 原子方式递减索引为i
的元素的值,内存效果由VarHandle.getAndAdd(java.lang.Object...)
指定。final int
get
(int i) 返回索引为i
的元素的当前值,内存效果由VarHandle.getVolatile(java.lang.Object...)
指定。final int
getAcquire
(int i) 返回索引为i
的元素的当前值,内存效果由VarHandle.getAcquire(java.lang.Object...)
指定。final int
getAndAccumulate
(int i, int x, IntBinaryOperator accumulatorFunction) 原子方式更新(根据VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果)索引为i
的元素,结果为将给定函数应用于当前值和给定值的结果,返回先前的值。final int
getAndAdd
(int i, int delta) 原子方式将给定值添加到索引为i
的元素中,内存效果由VarHandle.getAndAdd(java.lang.Object...)
指定。final int
getAndDecrement
(int i) 原子方式递减索引为i
的元素的值,内存效果由VarHandle.getAndAdd(java.lang.Object...)
指定。final int
getAndIncrement
(int i) 原子方式递增索引为i
的元素的值,内存效果由VarHandle.getAndAdd(java.lang.Object...)
指定。final int
getAndSet
(int i, int newValue) final int
getAndUpdate
(int i, IntUnaryOperator updateFunction) 原子方式更新(根据VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果)索引为i
的元素,结果为将给定函数应用于当前值和给定值的结果,返回先前的值。final int
getOpaque
(int i) 返回索引为i
的元素的当前值,内存效果由VarHandle.getOpaque(java.lang.Object...)
指定。final int
getPlain
(int i) 返回索引为i
的元素的当前值,内存语义读取时变量被声明为非volatile
。final int
incrementAndGet
(int i) 原子方式递增索引为i
的元素的值,内存效果由VarHandle.getAndAdd(java.lang.Object...)
指定。final void
lazySet
(int i, int newValue) final int
length()
返回数组的长度。final void
set
(int i, int newValue) final void
setOpaque
(int i, int newValue) final void
setPlain
(int i, int newValue) 将索引为i
的元素设置为newValue
,内存语义设置为变量被声明为非volatile
和非final
。final void
setRelease
(int i, int newValue) toString()
返回数组当前值的字符串表示形式。final int
updateAndGet
(int i, IntUnaryOperator updateFunction) 原子方式更新(根据VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果)索引为i
的元素,结果为将给定函数应用于当前值的结果,返回更新后的值。final boolean
weakCompareAndSet
(int i, int expectedValue, int newValue) 已弃用。final boolean
weakCompareAndSetAcquire
(int i, int expectedValue, int newValue) 可能原子方式将索引为i
的元素设置为newValue
,如果元素的当前值== 期望值
,内存效果由VarHandle.weakCompareAndSetAcquire(java.lang.Object...)
指定。final boolean
weakCompareAndSetPlain
(int i, int expectedValue, int newValue) 可能原子方式将索引为i
的元素设置为newValue
,如果元素的当前值== 期望值
,内存效果由VarHandle.weakCompareAndSetPlain(java.lang.Object...)
指定。final boolean
weakCompareAndSetRelease
(int i, int expectedValue, int newValue) 可能原子方式将索引为i
的元素设置为newValue
,如果元素的当前值== 期望值
,内存效果由VarHandle.weakCompareAndSetRelease(java.lang.Object...)
指定。final boolean
weakCompareAndSetVolatile
(int i, int expectedValue, int newValue)
-
Constructor Details
-
AtomicIntegerArray
public AtomicIntegerArray(int length) 创建一个给定长度的新AtomicIntegerArray,所有元素初始值为零。- 参数:
-
length
- 数组的长度
-
AtomicIntegerArray
public AtomicIntegerArray(int[] array) 创建一个新的AtomicIntegerArray,其长度与给定数组相同,并且所有元素都从给定数组复制而来。- 参数:
-
array
- 要从中复制元素的数组 - 抛出:
-
NullPointerException
- 如果数组为null
-
-
Method Details
-
length
public final int length()返回数组的长度。- 返回:
- 数组的长度
-
get
public final int get(int i) 返回索引为i
的元素的当前值,内存效果由VarHandle.getVolatile(java.lang.Object...)
指定。- 参数:
-
i
- 索引 - 返回:
- 当前值
-
set
public final void set(int i, int newValue) - 参数:
-
i
- 索引 -
newValue
- 新值
-
lazySet
public final void lazySet(int i, int newValue) 将索引为i
的元素设置为newValue
,具有VarHandle.setRelease(java.lang.Object...)
指定的内存效果。- 参数:
-
i
- 索引 -
newValue
- 新值 - 自1.6起:
- 1.6
-
getAndSet
public final int getAndSet(int i, int newValue) 原子性地将索引为i
的元素设置为newValue
并返回旧值,具有VarHandle.getAndSet(java.lang.Object...)
指定的内存效果。- 参数:
-
i
- 索引 -
newValue
- 新值 - 返回值:
- 先前的值
-
compareAndSet
public final boolean compareAndSet(int i, int expectedValue, int newValue) 如果元素的当前值== expectedValue
,则原子性地将索引为i
的元素设置为newValue
,具有VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果。- 参数:
-
i
- 索引 -
expectedValue
- 期望的值 -
newValue
- 新值 - 返回值:
-
如果成功则返回
true
。返回false
表示实际值不等于期望值。
-
weakCompareAndSet
@Deprecated(since="9") public final boolean weakCompareAndSet(int i, int expectedValue, int newValue) Deprecated.This method has plain memory effects but the method name implies volatile memory effects (see methods such ascompareAndExchange(int, int, int)
andcompareAndSet(int, int, int)
). To avoid confusion over plain or volatile memory effects it is recommended that the methodweakCompareAndSetPlain(int, int, int)
be used instead.如果元素的当前值== expectedValue
,则可能原子性地将索引为i
的元素设置为newValue
,具有VarHandle.weakCompareAndSetPlain(java.lang.Object...)
指定的内存效果。- 参数:
-
i
- 索引 -
expectedValue
- 期望的值 -
newValue
- 新值 - 返回值:
-
如果成功则返回
true
- 参见:
-
weakCompareAndSetPlain
public final boolean weakCompareAndSetPlain(int i, int expectedValue, int newValue) 如果元素的当前值== expectedValue
,则可能原子性地将索引为i
的元素设置为newValue
,具有VarHandle.weakCompareAndSetPlain(java.lang.Object...)
指定的内存效果。- 参数:
-
i
- 索引 -
expectedValue
- 期望的值 -
newValue
- 新值 - 返回值:
-
如果成功则返回
true
- 自9起:
- 9
-
getAndIncrement
public final int getAndIncrement(int i) 原子性地增加索引为i
的元素的值,具有VarHandle.getAndAdd(java.lang.Object...)
指定的内存效果。等同于
getAndAdd(i, 1)
。- 参数:
-
i
- 索引 - 返回值:
- 先前的值
-
getAndDecrement
public final int getAndDecrement(int i) 原子性地减少索引为i
的元素的值,具有VarHandle.getAndAdd(java.lang.Object...)
指定的内存效果。等同于
getAndAdd(i, -1)
。- 参数:
-
i
- 索引 - 返回值:
- 先前的值
-
getAndAdd
public final int getAndAdd(int i, int delta) 将给定值添加到索引为i
的元素中,具有VarHandle.getAndAdd(java.lang.Object...)
指定的内存效果。- 参数:
-
i
- 索引 -
delta
- 要添加的值 - 返回值:
- 先前的值
-
incrementAndGet
public final int incrementAndGet(int i) 原子性地增加索引为i
的元素的值,具有VarHandle.getAndAdd(java.lang.Object...)
指定的内存效果。等同于
addAndGet(i, 1)
。- 参数:
-
i
- 索引 - 返回值:
- 更新后的值
-
decrementAndGet
public final int decrementAndGet(int i) 原子性地减少索引为i
的元素的值,具有VarHandle.getAndAdd(java.lang.Object...)
指定的内存效果。等同于
addAndGet(i, -1)
。- 参数:
-
i
- 索引 - 返回值:
- 更新后的值
-
addAndGet
public final int addAndGet(int i, int delta) 将给定值添加到索引为i
的元素中,具有VarHandle.getAndAdd(java.lang.Object...)
指定的内存效果。- 参数:
-
i
- 索引 -
delta
- 要添加的值 - 返回值:
- 更新后的值
-
getAndUpdate
原子性地更新(具有VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果)索引为i
的元素,使用给定函数的结果返回先前的值。该函数应该是无副作用的,因为在尝试更新失败时,可能会重新应用该函数以解决线程之间的争用。- 参数:
-
i
- 索引 -
updateFunction
- 无副作用的函数 - 返回值:
- 先前的值
- 自1.8起:
- 1.8
-
updateAndGet
原子性地更新(具有VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果)索引为i
的元素,使用给定函数的结果返回更新后的值。该函数应该是无副作用的,因为在尝试更新失败时,可能会重新应用该函数以解决线程之间的争用。- 参数:
-
i
- 索引 -
updateFunction
- 无副作用的函数 - 返回值:
- 更新后的值
- 自1.8起:
- 1.8
-
getAndAccumulate
原子性地更新(具有VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果)索引为i
的元素,使用将给定函数应用于当前值和给定值的结果返回先前的值。该函数应该是无副作用的,因为在尝试更新失败时,可能会重新应用该函数以解决线程之间的争用。该函数将当前值作为索引为i
的元素的第一个参数,并将给定更新作为第二个参数。- 参数:
-
i
- 索引 -
x
- 更新值 -
accumulatorFunction
- 两个参数的无副作用函数 - 返回值:
- 先前的值
- 自1.8起:
- 1.8
-
accumulateAndGet
原子性地更新(具有VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果)索引为i
的元素,使用将给定函数应用于当前值和给定值的结果返回更新后的值。该函数应该是无副作用的,因为在尝试更新失败时,可能会重新应用该函数以解决线程之间的争用。该函数将当前值作为索引为i
的元素的第一个参数,并将给定更新作为第二个参数。- 参数:
-
i
- 索引 -
x
- 更新值 -
accumulatorFunction
- 两个参数的无副作用函数 - 返回值:
- 更新后的值
- 自1.8起:
- 1.8
-
toString
返回数组当前值的字符串表示形式。 -
getPlain
public final int getPlain(int i) 返回索引为i
的元素的当前值,具有读取内存语义,就好像变量被声明为非volatile
。- 参数:
-
i
- 索引 - 返回值:
- 值
- 自9起:
- 9
-
setPlain
public final void setPlain(int i, int newValue) 将索引为i
的元素设置为newValue
,具有设置内存语义,就好像变量被声明为非volatile
和非final
。- 参数:
-
i
- 索引 -
newValue
- 新值 - 自9起:
- 9
-
getOpaque
public final int getOpaque(int i) 返回索引为i
的元素的当前值,具有VarHandle.getOpaque(java.lang.Object...)
指定的内存效果。- 参数:
-
i
- 索引 - 返回值:
- 值
- 自9起:
- 9
-
setOpaque
public final void setOpaque(int i, int newValue) 将索引为i
的元素设置为newValue
,具有VarHandle.setOpaque(java.lang.Object...)
指定的内存效果。- 参数:
-
i
- 索引 -
newValue
- 新值 - 自9起:
- 9
-
getAcquire
public final int getAcquire(int i) 返回索引为i
的元素的当前值,具有由VarHandle.getAcquire(java.lang.Object...)
指定的内存效果。- 参数:
-
i
- 索引 - 返回:
- 值
- 自 JDK 版本:
- 9
-
setRelease
public final void setRelease(int i, int newValue) - 参数:
-
i
- 索引 -
newValue
- 新值 - 自 JDK 版本:
- 9
-
compareAndExchange
public final int compareAndExchange(int i, int expectedValue, int newValue) 如果元素的当前值(称为见证值)== expectedValue
,则将索引为i
的元素原子设置为newValue
,具有由VarHandle.compareAndExchange(java.lang.Object...)
指定的内存效果。- 参数:
-
i
- 索引 -
expectedValue
- 期望值 -
newValue
- 新值 - 返回:
- 见证值,如果成功将与期望值相同
- 自 JDK 版本:
- 9
-
compareAndExchangeAcquire
public final int compareAndExchangeAcquire(int i, int expectedValue, int newValue) 如果元素的当前值(称为见证值)== expectedValue
,则将索引为i
的元素原子设置为newValue
,具有由VarHandle.compareAndExchangeAcquire(java.lang.Object...)
指定的内存效果。- 参数:
-
i
- 索引 -
expectedValue
- 期望值 -
newValue
- 新值 - 返回:
- 见证值,如果成功将与期望值相同
- 自 JDK 版本:
- 9
-
compareAndExchangeRelease
public final int compareAndExchangeRelease(int i, int expectedValue, int newValue) 如果元素的当前值(称为见证值)== expectedValue
,则将索引为i
的元素原子设置为newValue
,具有由VarHandle.compareAndExchangeRelease(java.lang.Object...)
指定的内存效果。- 参数:
-
i
- 索引 -
expectedValue
- 期望值 -
newValue
- 新值 - 返回:
- 见证值,如果成功将与期望值相同
- 自 JDK 版本:
- 9
-
weakCompareAndSetVolatile
public final boolean weakCompareAndSetVolatile(int i, int expectedValue, int newValue) 如果元素的当前值== expectedValue
,可能将索引为i
的元素原子设置为newValue
,具有由VarHandle.weakCompareAndSet(java.lang.Object...)
指定的内存效果。- 参数:
-
i
- 索引 -
expectedValue
- 期望值 -
newValue
- 新值 - 返回:
-
如果成功则返回
true
- 自 JDK 版本:
- 9
-
weakCompareAndSetAcquire
public final boolean weakCompareAndSetAcquire(int i, int expectedValue, int newValue) 如果元素的当前值== expectedValue
,可能将索引为i
的元素原子设置为newValue
,具有由VarHandle.weakCompareAndSetAcquire(java.lang.Object...)
指定的内存效果。- 参数:
-
i
- 索引 -
expectedValue
- 期望值 -
newValue
- 新值 - 返回:
-
如果成功则返回
true
- 自 JDK 版本:
- 9
-
weakCompareAndSetRelease
public final boolean weakCompareAndSetRelease(int i, int expectedValue, int newValue) 如果元素的当前值== expectedValue
,可能将索引为i
的元素原子设置为newValue
,具有由VarHandle.weakCompareAndSetRelease(java.lang.Object...)
指定的内存效果。- 参数:
-
i
- 索引 -
expectedValue
- 期望值 -
newValue
- 新值 - 返回:
-
如果成功则返回
true
- 自 JDK 版本:
- 9
-
compareAndExchange(int, int, int)
和compareAndSet(int, int, int)
等方法)。