java.lang.Object
java.util.concurrent.atomic.AtomicReferenceArray<E>
- 类型参数:
E- 此数组中元素的基类
- 所有已实现的接口:
Serializable
一个对象引用数组,其中的元素可以自动更新。有关原子访问属性的描述,请参阅
VarHandle 规范。
- 自从:
- 1.5
- 参见:
-
构造方法总结
构造方法构造方法描述AtomicReferenceArray(int length) 创建一个给定长度的新 AtomicReferenceArray,所有元素初始为 null。AtomicReferenceArray(E[] array) 创建一个新的 AtomicReferenceArray,其长度与给定数组相同,并且所有元素都是从给定数组复制而来的。 -
方法总结
修饰符和类型方法描述final EaccumulateAndGet(int i, E x, BinaryOperator<E> accumulatorFunction) 使用给定函数应用于当前值和给定值的结果原子地更新(具有VarHandle.compareAndSet(java.lang.Object...)指定的记忆效应)索引i处的元素,返回更新后的值。final EcompareAndExchange(int i, E expectedValue, E newValue) 如果元素的当前值称为 witness value、== expectedValue,具有VarHandle.compareAndExchange(java.lang.Object...)指定的记忆效应,则以原子方式将索引i处的元素设置为newValue。final EcompareAndExchangeAcquire(int i, E expectedValue, E newValue) 如果元素的当前值称为 witness value、== expectedValue,具有由VarHandle.compareAndExchangeAcquire(java.lang.Object...)指定的记忆效应,则以原子方式将索引i处的元素设置为newValue。final EcompareAndExchangeRelease(int i, E expectedValue, E newValue) 如果元素的当前值(称为 witness value 、== expectedValue)具有由VarHandle.compareAndExchangeRelease(java.lang.Object...)指定的记忆效应,则以原子方式将索引i处的元素设置为newValue。final booleancompareAndSet(int i, E expectedValue, E newValue) 如果元素的当前值为== expectedValue,则以原子方式将索引i处的元素设置为newValue,并具有由VarHandle.compareAndSet(java.lang.Object...)指定的记忆效应。final Eget(int i) 返回索引i处元素的当前值,具有VarHandle.getVolatile(java.lang.Object...)指定的记忆效应。final EgetAcquire(int i) 返回索引i处元素的当前值,具有VarHandle.getAcquire(java.lang.Object...)指定的记忆效应。final EgetAndAccumulate(int i, E x, BinaryOperator<E> accumulatorFunction) 以原子方式更新(具有VarHandle.compareAndSet(java.lang.Object...)指定的记忆效应)索引i处的元素,其结果为将给定函数应用于当前值和给定值,返回先前值。final Efinal EgetAndUpdate(int i, UnaryOperator<E> updateFunction) 使用给定函数的应用结果以原子方式更新(具有VarHandle.compareAndSet(java.lang.Object...)指定的记忆效应)索引i处的元素,返回先前的值。final EgetOpaque(int i) 返回索引i处元素的当前值,具有VarHandle.getOpaque(java.lang.Object...)指定的记忆效应。final EgetPlain(int i) 返回索引i处元素的当前值,读取的内存语义就好像变量被声明为非volatile一样。final voidfinal intlength()返回数组的长度。final voidfinal voidfinal void将索引i处的元素设置为newValue,设置的内存语义就好像变量被声明为 non-volatile和 non-final一样。final voidsetRelease(int i, E newValue) toString()返回数组当前值的字符串表示形式。final EupdateAndGet(int i, UnaryOperator<E> updateFunction) 使用给定函数的应用结果以原子方式更新(具有VarHandle.compareAndSet(java.lang.Object...)指定的记忆效应)索引i处的元素,返回更新后的值。final booleanweakCompareAndSet(int i, E expectedValue, E newValue) 已弃用。final booleanweakCompareAndSetAcquire(int i, E expectedValue, E newValue) 如果元素的当前值为== expectedValue,则可能自动将索引i处的元素设置为newValue,并具有由VarHandle.weakCompareAndSetAcquire(java.lang.Object...)指定的记忆效应。final booleanweakCompareAndSetPlain(int i, E expectedValue, E newValue) 如果元素的当前值为== expectedValue,则可能自动将索引i处的元素设置为newValue,并具有由VarHandle.weakCompareAndSetPlain(java.lang.Object...)指定的记忆效应。final booleanweakCompareAndSetRelease(int i, E expectedValue, E newValue) 如果元素的当前值为== expectedValue,则可能以原子方式将索引i处的元素设置为newValue,并具有由VarHandle.weakCompareAndSetRelease(java.lang.Object...)指定的记忆效应。final booleanweakCompareAndSetVolatile(int i, E expectedValue, E newValue) 如果元素的当前值为== expectedValue,则可能自动将索引i处的元素设置为newValue,并具有由VarHandle.weakCompareAndSet(java.lang.Object...)指定的记忆效应。
-
构造方法详细信息
-
AtomicReferenceArray
public AtomicReferenceArray(int length) 创建一个给定长度的新 AtomicReferenceArray,所有元素初始为 null。- 参数:
length- 数组的长度
-
AtomicReferenceArray
创建一个新的 AtomicReferenceArray,其长度与给定数组相同,并且所有元素都是从给定数组复制而来的。- 参数:
array- 要从中复制元素的数组- 抛出:
NullPointerException- 如果数组为空
-
-
方法详情
-
length
public final int length()返回数组的长度。- 返回:
- 数组的长度
-
get
返回索引i处元素的当前值,具有VarHandle.getVolatile(java.lang.Object...)指定的记忆效应。- 参数:
i- 索引- 返回:
- 当前值
-
set
- 参数:
i- 索引newValue- 新值
-
lazySet
- 参数:
i- 索引newValue- 新值- 自从:
- 1.6
-
getAndSet
- 参数:
i- 索引newValue- 新值- 返回:
- 以前的值
-
compareAndSet
如果元素的当前值为== expectedValue,则以原子方式将索引i处的元素设置为newValue,并具有由VarHandle.compareAndSet(java.lang.Object...)指定的记忆效应。- 参数:
i- 索引expectedValue- 期望值newValue- 新值- 返回:
true如果成功。错误返回表示实际值不等于预期值。
-
weakCompareAndSet
已弃用。此方法具有简单的记忆效应,但方法名称暗示易失性记忆效应(请参阅compareAndExchange(int, E, E)和compareAndSet(int, E, E)等方法)。为避免混淆普通或易失性记忆效应,建议改用方法weakCompareAndSetPlain(int, E, E)。如果元素的当前值为== expectedValue,则可能自动将索引i处的元素设置为newValue,并具有由VarHandle.weakCompareAndSetPlain(java.lang.Object...)指定的记忆效应。- 参数:
i- 索引expectedValue- 期望值newValue- 新值- 返回:
true如果成功- 参见:
-
weakCompareAndSetPlain
如果元素的当前值为== expectedValue,则可能自动将索引i处的元素设置为newValue,并具有由VarHandle.weakCompareAndSetPlain(java.lang.Object...)指定的记忆效应。- 参数:
i- 索引expectedValue- 期望值newValue- 新值- 返回:
true如果成功- 自从:
- 9
-
getAndUpdate
使用给定函数的应用结果以原子方式更新(具有VarHandle.compareAndSet(java.lang.Object...)指定的记忆效应)索引i处的元素,返回先前的值。该函数应该是无副作用的,因为当由于线程之间的争用而尝试更新失败时,它可能会被重新应用。- 参数:
i- 索引updateFunction- 无副作用的函数- 返回:
- 以前的值
- 自从:
- 1.8
-
updateAndGet
使用给定函数的应用结果以原子方式更新(具有VarHandle.compareAndSet(java.lang.Object...)指定的记忆效应)索引i处的元素,返回更新后的值。该函数应该是无副作用的,因为当由于线程之间的争用而尝试更新失败时,它可能会被重新应用。- 参数:
i- 索引updateFunction- 无副作用的函数- 返回:
- 更新值
- 自从:
- 1.8
-
getAndAccumulate
以原子方式更新(具有VarHandle.compareAndSet(java.lang.Object...)指定的记忆效应)索引i处的元素,其结果为将给定函数应用于当前值和给定值,返回先前值。该函数应该是无副作用的,因为当由于线程之间的争用而尝试更新失败时,它可能会被重新应用。该函数应用索引i处元素的当前值作为其第一个参数,并将给定的更新作为第二个参数。- 参数:
i- 索引x- 更新值accumulatorFunction- 两个参数的无副作用函数- 返回:
- 以前的值
- 自从:
- 1.8
-
accumulateAndGet
使用给定函数应用于当前值和给定值的结果原子地更新(具有VarHandle.compareAndSet(java.lang.Object...)指定的记忆效应)索引i处的元素,返回更新后的值。该函数应该是无副作用的,因为当由于线程之间的争用而尝试更新失败时,它可能会被重新应用。该函数应用索引i处元素的当前值作为其第一个参数,并将给定的更新作为第二个参数。- 参数:
i- 索引x- 更新值accumulatorFunction- 两个参数的无副作用函数- 返回:
- 更新值
- 自从:
- 1.8
-
toString
返回数组当前值的字符串表示形式。 -
getPlain
返回索引i处元素的当前值,读取的内存语义就好像变量被声明为非volatile一样。- 参数:
i- 索引- 返回:
- 值
- 自从:
- 9
-
setPlain
将索引i处的元素设置为newValue,设置的内存语义就好像变量被声明为 non-volatile和 non-final一样。- 参数:
i- 索引newValue- 新值- 自从:
- 9
-
getOpaque
返回索引i处元素的当前值,具有VarHandle.getOpaque(java.lang.Object...)指定的记忆效应。- 参数:
i- 索引- 返回:
- 值
- 自从:
- 9
-
setOpaque
- 参数:
i- 索引newValue- 新值- 自从:
- 9
-
getAcquire
返回索引i处元素的当前值,具有VarHandle.getAcquire(java.lang.Object...)指定的记忆效应。- 参数:
i- 索引- 返回:
- 值
- 自从:
- 9
-
setRelease
- 参数:
i- 索引newValue- 新值- 自从:
- 9
-
compareAndExchange
如果元素的当前值称为 witness value、== expectedValue,具有VarHandle.compareAndExchange(java.lang.Object...)指定的记忆效应,则以原子方式将索引i处的元素设置为newValue。- 参数:
i- 索引expectedValue- 期望值newValue- 新值- 返回:
- 见证值,如果成功,它将与预期值相同
- 自从:
- 9
-
compareAndExchangeAcquire
如果元素的当前值称为 witness value、== expectedValue,具有由VarHandle.compareAndExchangeAcquire(java.lang.Object...)指定的记忆效应,则以原子方式将索引i处的元素设置为newValue。- 参数:
i- 索引expectedValue- 期望值newValue- 新值- 返回:
- 见证值,如果成功,它将与预期值相同
- 自从:
- 9
-
compareAndExchangeRelease
如果元素的当前值(称为 witness value 、== expectedValue)具有由VarHandle.compareAndExchangeRelease(java.lang.Object...)指定的记忆效应,则以原子方式将索引i处的元素设置为newValue。- 参数:
i- 索引expectedValue- 期望值newValue- 新值- 返回:
- 见证值,如果成功,它将与预期值相同
- 自从:
- 9
-
weakCompareAndSetVolatile
如果元素的当前值为== expectedValue,则可能自动将索引i处的元素设置为newValue,并具有由VarHandle.weakCompareAndSet(java.lang.Object...)指定的记忆效应。- 参数:
i- 索引expectedValue- 期望值newValue- 新值- 返回:
true如果成功- 自从:
- 9
-
weakCompareAndSetAcquire
如果元素的当前值为== expectedValue,则可能自动将索引i处的元素设置为newValue,并具有由VarHandle.weakCompareAndSetAcquire(java.lang.Object...)指定的记忆效应。- 参数:
i- 索引expectedValue- 期望值newValue- 新值- 返回:
true如果成功- 自从:
- 9
-
weakCompareAndSetRelease
如果元素的当前值为== expectedValue,则可能以原子方式将索引i处的元素设置为newValue,并具有由VarHandle.weakCompareAndSetRelease(java.lang.Object...)指定的记忆效应。- 参数:
i- 索引expectedValue- 期望值newValue- 新值- 返回:
true如果成功- 自从:
- 9
-
compareAndExchange(int, E, E)和compareAndSet(int, E, E)等方法)。