java.lang.Object
java.util.concurrent.atomic.AtomicReferenceArray<E>
- 类型参数:
-
E
- 此数组中保存的元素的基类
- 所有已实现的接口:
-
Serializable
一个对象引用数组,其中的元素可以被原子方式更新。请参阅
VarHandle
规范,了解原子访问属性的描述。
- 自 JDK 版本:
- 1.5
- 另请参见:
-
Constructor Summary
ConstructorDescriptionAtomicReferenceArray
(int length) 创建一个给定长度的新 AtomicReferenceArray,所有元素最初都为 null。AtomicReferenceArray
(E[] array) 创建一个新的 AtomicReferenceArray,其长度与给定数组相同,并且所有元素都从给定数组复制而来。 -
Method Summary
Modifier and TypeMethodDescriptionfinal E
accumulateAndGet
(int i, E x, BinaryOperator<E> accumulatorFunction) 原子方式更新(根据VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果)索引为i
处的元素,将给定函数应用于当前值和给定值的结果,并返回更新后的值。final E
compareAndExchange
(int i, E expectedValue, E newValue) 如果元素的当前值(称为“见证值”)== expectedValue
,则使用VarHandle.compareAndExchange(java.lang.Object...)
指定的内存效果,将索引为i
处的元素原子设置为newValue
。final E
compareAndExchangeAcquire
(int i, E expectedValue, E newValue) 如果元素的当前值(称为“见证值”)== expectedValue
,则使用VarHandle.compareAndExchangeAcquire(java.lang.Object...)
指定的内存效果,将索引为i
处的元素原子设置为newValue
。final E
compareAndExchangeRelease
(int i, E expectedValue, E newValue) 如果元素的当前值(称为“见证值”)== expectedValue
,则使用VarHandle.compareAndExchangeRelease(java.lang.Object...)
指定的内存效果,将索引为i
处的元素原子设置为newValue
。final boolean
compareAndSet
(int i, E expectedValue, E newValue) 如果元素的当前值== expectedValue
,则使用VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果,将索引为i
处的元素原子设置为newValue
。final E
get
(int i) 返回索引为i
处元素的当前值,具有VarHandle.getVolatile(java.lang.Object...)
指定的内存效果。final E
getAcquire
(int i) 返回索引为i
处元素的当前值,具有VarHandle.getAcquire(java.lang.Object...)
指定的内存效果。final E
getAndAccumulate
(int i, E x, BinaryOperator<E> accumulatorFunction) 原子方式更新(根据VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果)索引为i
处的元素,将给定函数应用于当前值和给定值的结果,并返回先前的值。final E
final E
getAndUpdate
(int i, UnaryOperator<E> updateFunction) 原子方式更新(根据VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果)索引为i
处的元素,将给定函数应用于当前值的结果,并返回先前的值。final E
getOpaque
(int i) 返回索引为i
处元素的当前值,具有VarHandle.getOpaque(java.lang.Object...)
指定的内存效果。final E
getPlain
(int i) 返回索引为i
处元素的当前值,具有读取内存语义,就好像变量声明为非volatile
。final void
final int
length()
返回数组的长度。final void
final void
final void
将索引为i
处的元素设置为newValue
,具有设置内存语义,就好像变量声明为非volatile
和非final
。final void
setRelease
(int i, E newValue) toString()
返回数组当前值的字符串表示形式。final E
updateAndGet
(int i, UnaryOperator<E> updateFunction) 原子方式更新(根据VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果)索引为i
处的元素,将给定函数应用于当前值的结果,并返回更新后的值。final boolean
weakCompareAndSet
(int i, E expectedValue, E newValue) 已弃用。final boolean
weakCompareAndSetAcquire
(int i, E expectedValue, E newValue) 如果元素的当前值== expectedValue
,则可能将索引为i
处的元素原子设置为newValue
,具有VarHandle.weakCompareAndSetAcquire(java.lang.Object...)
指定的内存效果。final boolean
weakCompareAndSetPlain
(int i, E expectedValue, E newValue) 如果元素的当前值== expectedValue
,则可能将索引为i
处的元素原子设置为newValue
,具有VarHandle.weakCompareAndSetPlain(java.lang.Object...)
指定的内存效果。final boolean
weakCompareAndSetRelease
(int i, E expectedValue, E newValue) 如果元素的当前值== expectedValue
,则可能将索引为i
处的元素原子设置为newValue
,具有VarHandle.weakCompareAndSetRelease(java.lang.Object...)
指定的内存效果。final boolean
weakCompareAndSetVolatile
(int i, E expectedValue, E newValue) 如果元素的当前值== expectedValue
,则可能将索引为i
处的元素原子设置为newValue
,具有VarHandle.weakCompareAndSet(java.lang.Object...)
指定的内存效果。
-
Constructor Details
-
AtomicReferenceArray
public AtomicReferenceArray(int length) 创建一个给定长度的新 AtomicReferenceArray,所有元素最初都为 null。- 参数:
-
length
- 数组的长度
-
AtomicReferenceArray
创建一个新的 AtomicReferenceArray,其长度与给定数组相同,并且所有元素都从给定数组复制而来。- 参数:
-
array
- 要从中复制元素的数组 - 抛出:
-
NullPointerException
- 如果数组为 null
-
-
Method Details
-
length
public final int length()返回数组的长度。- 返回:
- 数组的长度
-
get
返回索引为i
处元素的当前值,具有VarHandle.getVolatile(java.lang.Object...)
指定的内存效果。- 参数:
-
i
- 索引 - 返回:
- 当前值
-
set
- 参数:
-
i
- 索引 -
newValue
- 新值
-
lazySet
- 参数:
-
i
- 索引 -
newValue
- 新值 - 自 JDK 版本:
- 1.6
-
getAndSet
- 参数:
-
i
- 索引 -
newValue
- 新值 - 返回:
- 先前的值
-
compareAndSet
将索引为i
处的元素设置为newValue
,如果元素的当前值== expectedValue
,具有VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果。- 参数:
-
i
- 索引 -
expectedValue
- 期望值 -
newValue
- 新值 - 返回:
-
true
如果成功。返回false表示实际值不等于期望值。
-
weakCompareAndSet
Deprecated.This method has plain memory effects but the method name implies volatile memory effects (see methods such ascompareAndExchange(int, E, E)
andcompareAndSet(int, E, E)
). To avoid confusion over plain or volatile memory effects it is recommended that the methodweakCompareAndSetPlain(int, E, E)
be used instead.可能会原子性地将索引为i
的元素设置为newValue
,如果元素的当前值== expectedValue
,具有与VarHandle.weakCompareAndSetPlain(java.lang.Object...)
指定的内存效果。- 参数:
-
i
- 索引 -
expectedValue
- 期望值 -
newValue
- 新值 - 返回:
-
true
如果成功 - 参见:
-
weakCompareAndSetPlain
可能会原子性地将索引为i
的元素设置为newValue
,如果元素的当前值== expectedValue
,具有与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
,具有设置的内存语义,就好像变量被声明为非volatile
和非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
如果元素的当前值(称为见证值)== expectedValue
,则原子性地将索引为i
的元素设置为newValue
,具有由VarHandle.compareAndExchange(java.lang.Object...)
指定的内存效果。- 参数:
-
i
- 索引 -
expectedValue
- 期望值 -
newValue
- 新值 - 返回:
- 见证值,如果成功将与期望值相同
- 自版本:
- 9
-
compareAndExchangeAcquire
如果元素的当前值(称为见证值)== expectedValue
,则原子性地将索引为i
的元素设置为newValue
,具有由VarHandle.compareAndExchangeAcquire(java.lang.Object...)
指定的内存效果。- 参数:
-
i
- 索引 -
expectedValue
- 期望值 -
newValue
- 新值 - 返回:
- 见证值,如果成功将与期望值相同
- 自版本:
- 9
-
compareAndExchangeRelease
如果元素的当前值(称为见证值)== expectedValue
,则原子性地将索引为i
的元素设置为newValue
,具有由VarHandle.compareAndExchangeRelease(java.lang.Object...)
指定的内存效果。- 参数:
-
i
- 索引 -
expectedValue
- 期望值 -
newValue
- 新值 - 返回:
- 见证值,如果成功将与期望值相同
- 自版本:
- 9
-
weakCompareAndSetVolatile
可能会原子性地将索引为i
的元素设置为newValue
,如果元素的当前值== expectedValue
,具有由VarHandle.weakCompareAndSet(java.lang.Object...)
指定的内存效果。- 参数:
-
i
- 索引 -
expectedValue
- 期望值 -
newValue
- 新值 - 返回:
-
true
如果成功 - 自版本:
- 9
-
weakCompareAndSetAcquire
可能会原子性地将索引为i
的元素设置为newValue
,如果元素的当前值== expectedValue
,具有由VarHandle.weakCompareAndSetAcquire(java.lang.Object...)
指定的内存效果。- 参数:
-
i
- 索引 -
expectedValue
- 期望值 -
newValue
- 新值 - 返回:
-
true
如果成功 - 自版本:
- 9
-
weakCompareAndSetRelease
可能在满足内存效果的情况下,使用VarHandle.weakCompareAndSetRelease(java.lang.Object...)
,将索引为i
的元素原子地设置为newValue
,如果元素的当前值== expectedValue
。- 参数:
-
i
- 索引 -
expectedValue
- 期望值 -
newValue
- 新值 - 返回:
-
true
如果成功 - 自版本:
- 9
-
compareAndExchange(int, E, E)
和compareAndSet(int, E, E)
等方法)。