- java.lang.Object
-
- java.util.concurrent.atomic.AtomicReferenceArray<E>
-
- 参数类型
-
E
- 此数组中保存的元素的基类
- 实现的所有接口
-
Serializable
public class AtomicReferenceArray<E>extends Objectimplements Serializable
一组对象引用,其中元素可以原子方式更新。 有关原子访问属性的描述,请参阅VarHandle
规范。- 从以下版本开始:
- 1.5
- 另请参见:
- Serialized Form
-
-
构造方法摘要
构造方法 构造器 描述 AtomicReferenceArray(int length)
创建一个给定长度的新AtomicReferenceArray,所有元素最初为null。AtomicReferenceArray(E[] array)
创建一个新的AtomicReferenceArray,其长度与从给定数组中复制的所有元素相同。
-
方法摘要
所有方法 实例方法 具体的方法 弃用的方法 变量和类型 方法 描述 E
accumulateAndGet(int i, E x, BinaryOperator<E> accumulatorFunction)
原子更新(具有由VarHandle.compareAndSet(java.lang.Object...)
指定的记忆效应)索引i
处的元素,其中将给定函数应用于当前值和给定值的结果,返回更新的值。E
compareAndExchange(int i, E expectedValue, E newValue)
以原子方式设置在索引元件i
到newValue
如果该元素的当前值,被称为 证人值 ,== expectedValue
如通过指定,记忆效应VarHandle.compareAndExchange(java.lang.Object...)
。E
compareAndExchangeAcquire(int i, E expectedValue, E newValue)
以原子方式设置在索引元件i
到newValue
如果该元素的当前值,被称为 证人值 ,== expectedValue
如通过指定,记忆效应VarHandle.compareAndExchangeAcquire(java.lang.Object...)
。E
compareAndExchangeRelease(int i, E expectedValue, E newValue)
以原子方式设置在索引元件i
到newValue
如果该元素的当前值,被称为 证人值 ,== expectedValue
如通过指定,记忆效应VarHandle.compareAndExchangeRelease(java.lang.Object...)
。boolean
compareAndSet(int i, E expectedValue, E newValue)
以原子方式设置在索引元件i
到newValue
如果该元素的当前值== expectedValue
如通过指定,记忆效应VarHandle.compareAndSet(java.lang.Object...)
。E
get(int i)
返回索引为i
的元素的当前值,其内存效果由VarHandle.getVolatile(java.lang.Object...)
指定。E
getAcquire(int i)
返回索引为i
的元素的当前值,其内存效果由VarHandle.getAcquire(java.lang.Object...)
指定。E
getAndAccumulate(int i, E x, BinaryOperator<E> accumulatorFunction)
原子更新(具有由VarHandle.compareAndSet(java.lang.Object...)
指定的记忆效应)索引i
处的元素以及将给定函数应用于当前值和给定值的结果,返回先前的值。E
getAndSet(int i, E newValue)
E
getAndUpdate(int i, UnaryOperator<E> updateFunction)
原子更新(具有由VarHandle.compareAndSet(java.lang.Object...)
指定的记忆效应)索引i
处的元素以及应用给定函数的结果,返回先前的值。E
getOpaque(int i)
返回索引为i
的元素的当前值,其内存效果由VarHandle.getOpaque(java.lang.Object...)
指定。E
getPlain(int i)
返回索引为i
的元素的当前值,其内存语义为i
,就好像该变量被声明为非volatile
。void
lazySet(int i, E newValue)
int
length()
返回数组的长度。void
set(int i, E newValue)
void
setOpaque(int i, E newValue)
void
setPlain(int i, E newValue)
将索引i
处的元素设置为newValue
,其内存语义设置为将变量声明为非volatile
且非final
。void
setRelease(int i, E newValue)
String
toString()
返回数组当前值的String表示形式。E
updateAndGet(int i, UnaryOperator<E> updateFunction)
原子更新(具有由VarHandle.compareAndSet(java.lang.Object...)
指定的记忆效应)索引i
处的元素以及应用给定函数的结果,返回更新的值。boolean
weakCompareAndSet(int i, E expectedValue, E newValue)
已过时。此方法具有简单的记忆效应,但方法名称意味着易失性记忆效应(请参阅compareAndExchange(int, E, E)
和compareAndSet(int, E, E)
等方法)。boolean
weakCompareAndSetAcquire(int i, E expectedValue, E newValue)
可能以原子方式设置在索引元件i
到newValue
如果该元素的当前值== expectedValue
如通过指定,记忆效应VarHandle.weakCompareAndSetAcquire(java.lang.Object...)
。boolean
weakCompareAndSetPlain(int i, E expectedValue, E newValue)
可能以原子方式设置在索引元件i
到newValue
如果该元素的当前值== expectedValue
如通过指定,记忆效应VarHandle.weakCompareAndSetPlain(java.lang.Object...)
。boolean
weakCompareAndSetRelease(int i, E expectedValue, E newValue)
可能以原子方式设置在索引元件i
到newValue
如果该元素的当前值== expectedValue
如通过指定,记忆效应VarHandle.weakCompareAndSetRelease(java.lang.Object...)
。boolean
weakCompareAndSetVolatile(int i, E expectedValue, E newValue)
可能以原子方式设置在索引元件i
到newValue
如果该元素的当前值== expectedValue
如通过指定,记忆效应VarHandle.weakCompareAndSet(java.lang.Object...)
。
-
-
-
构造方法详细信息
-
AtomicReferenceArray
public AtomicReferenceArray(int length)
创建一个给定长度的新AtomicReferenceArray,所有元素最初为null。- 参数
-
length
- 数组的长度
-
AtomicReferenceArray
public AtomicReferenceArray(E[] array)
创建一个新的AtomicReferenceArray,其长度与从给定数组中复制的所有元素相同。- 参数
-
array
- 要从中复制元素的数组 - 异常
-
NullPointerException
- 如果array为null
-
-
方法详细信息
-
length
public final int length()
返回数组的长度。- 结果
- 数组的长度
-
get
public final E get(int i)
返回索引为i
的元素的当前值,其内存效果由VarHandle.getVolatile(java.lang.Object...)
指定。- 参数
-
i
- 该指数 - 结果
- 当前的价值
-
set
public final void set(int i, E newValue)
- 参数
-
i
- 该指数 -
newValue
- 新值
-
lazySet
public final void lazySet(int i, E newValue)
- 参数
-
i
- 该指数 -
newValue
- 新值 - 从以下版本开始:
- 1.6
-
compareAndSet
public final boolean compareAndSet(int i, E expectedValue, E newValue)
以原子方式设置在索引元件i
到newValue
如果该元素的当前值== expectedValue
如通过指定,记忆效应VarHandle.compareAndSet(java.lang.Object...)
。- 参数
-
i
- 该指数 -
expectedValue
- 期望值 -
newValue
- 新值 - 结果
-
true
如果成功。 错误返回表示实际值不等于预期值。
-
weakCompareAndSet
@Deprecated(since="9")public final boolean weakCompareAndSet(int i, E expectedValue, E newValue)
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(int, E, E)
-
weakCompareAndSetPlain
public final boolean weakCompareAndSetPlain(int i, E expectedValue, E newValue)
可能以原子方式设置在索引元件i
到newValue
如果该元素的当前值== expectedValue
如通过指定,记忆效应VarHandle.weakCompareAndSetPlain(java.lang.Object...)
。- 参数
-
i
- 该指数 -
expectedValue
- 期望值 -
newValue
- 新值 - 结果
-
true
如果成功 - 从以下版本开始:
- 9
-
getAndUpdate
public final E getAndUpdate(int i, UnaryOperator<E> updateFunction)
原子更新(具有由VarHandle.compareAndSet(java.lang.Object...)
指定的记忆效应)索引i
处的元素以及应用给定函数的结果,返回先前的值。 该函数应该是无副作用的,因为当尝试的更新由于线程之间的争用而失败时,它可能会被重新应用。- 参数
-
i
- 该指数 -
updateFunction
- 无副作用的功能 - 结果
- 以前的值
- 从以下版本开始:
- 1.8
-
updateAndGet
public final E updateAndGet(int i, UnaryOperator<E> updateFunction)
原子更新(具有由VarHandle.compareAndSet(java.lang.Object...)
指定的记忆效应)索引i
处的元素以及应用给定函数的结果,返回更新的值。 该函数应该是无副作用的,因为当尝试的更新由于线程之间的争用而失败时,它可能会被重新应用。- 参数
-
i
- 该指数 -
updateFunction
- 无副作用的功能 - 结果
- 更新的值
- 从以下版本开始:
- 1.8
-
getAndAccumulate
public final E getAndAccumulate(int i, E x, BinaryOperator<E> accumulatorFunction)
原子更新(具有由VarHandle.compareAndSet(java.lang.Object...)
指定的记忆效应)索引i
处的元素,其中将给定函数应用于当前值和给定值,返回先前值。 该函数应该是无副作用的,因为当尝试的更新由于线程之间的争用而失败时,它可能会被重新应用。 该函数应用索引为i
的元素的当前值作为其第一个参数,并将给定的更新作为第二个参数。- 参数
-
i
- 该指数 -
x
- 更新值 -
accumulatorFunction
- 两个参数的无副作用函数 - 结果
- 以前的值
- 从以下版本开始:
- 1.8
-
accumulateAndGet
public final E accumulateAndGet(int i, E x, BinaryOperator<E> accumulatorFunction)
原子更新(具有由VarHandle.compareAndSet(java.lang.Object...)
指定的记忆效应)索引i
处的元素以及将给定函数应用于当前值和给定值的结果,返回更新的值。 该函数应该是无副作用的,因为当尝试的更新由于线程之间的争用而失败时,它可能会被重新应用。 该函数应用索引为i
的元素的当前值作为其第一个参数,并将给定的更新作为第二个参数。- 参数
-
i
- 该指数 -
x
- 更新值 -
accumulatorFunction
- 两个参数的无副作用函数 - 结果
- 更新的值
- 从以下版本开始:
- 1.8
-
getPlain
public final E getPlain(int i)
返回索引为i
的元素的当前值,其内存语义为i
,就好像该变量被声明为非volatile
。- 参数
-
i
- 该指数 - 结果
- 价值
- 从以下版本开始:
- 9
-
setPlain
public final void setPlain(int i, E newValue)
将索引i
处的元素设置为newValue
,其内存语义设置为将变量声明为非volatile
和非final
。- 参数
-
i
- 索引 -
newValue
- 新值 - 从以下版本开始:
- 9
-
getOpaque
public final E getOpaque(int i)
返回索引为i
的元素的当前值,其内存效果由VarHandle.getOpaque(java.lang.Object...)
指定。- 参数
-
i
- 该指数 - 结果
- 价值
- 从以下版本开始:
- 9
-
setOpaque
public final void setOpaque(int i, E newValue)
- 参数
-
i
- 该指数 -
newValue
- 新值 - 从以下版本开始:
- 9
-
getAcquire
public final E getAcquire(int i)
返回索引为i
的元素的当前值,其内存效果由VarHandle.getAcquire(java.lang.Object...)
指定。- 参数
-
i
- 该指数 - 结果
- 价值
- 从以下版本开始:
- 9
-
setRelease
public final void setRelease(int i, E newValue)
- 参数
-
i
- 该指数 -
newValue
- 新值 - 从以下版本开始:
- 9
-
compareAndExchange
public final E compareAndExchange(int i, E expectedValue, E newValue)
以原子方式设置在索引元件i
到newValue
如果该元素的当前值,被称为 证人值 ,== expectedValue
如通过指定,记忆效应VarHandle.compareAndExchange(java.lang.Object...)
。- 参数
-
i
- 该指数 -
expectedValue
- 期望值 -
newValue
- 新值 - 结果
- 见证值,如果成功则与预期值相同
- 从以下版本开始:
- 9
-
compareAndExchangeAcquire
public final E compareAndExchangeAcquire(int i, E expectedValue, E newValue)
如果元素的当前值(称为 见证值== expectedValue
,具有由VarHandle.compareAndExchangeAcquire(java.lang.Object...)
指定的记忆效应),== expectedValue
原子方式将索引i
newValue
的元素设置为 newValue 。- 参数
-
i
- 该指数 -
expectedValue
- 期望值 -
newValue
- 新值 - 结果
- 见证值,如果成功则与预期值相同
- 从以下版本开始:
- 9
-
compareAndExchangeRelease
public final E compareAndExchangeRelease(int i, E expectedValue, E newValue)
以原子方式设置在索引元件i
到newValue
如果该元素的当前值,被称为 证人值 ,== expectedValue
如通过指定,记忆效应VarHandle.compareAndExchangeRelease(java.lang.Object...)
。- 参数
-
i
- 该指数 -
expectedValue
- 预期值 -
newValue
- 新值 - 结果
- 见证值,如果成功则与预期值相同
- 从以下版本开始:
- 9
-
weakCompareAndSetVolatile
public final boolean weakCompareAndSetVolatile(int i, E expectedValue, E newValue)
可能以原子方式设置在索引元件i
到newValue
如果该元素的当前值== expectedValue
如通过指定,记忆效应VarHandle.weakCompareAndSet(java.lang.Object...)
。- 参数
-
i
- 该指数 -
expectedValue
- 预期值 -
newValue
- 新值 - 结果
-
true
如果成功 - 从以下版本开始:
- 9
-
weakCompareAndSetAcquire
public final boolean weakCompareAndSetAcquire(int i, E expectedValue, E newValue)
可能以原子方式设置在索引元件i
到newValue
如果该元素的当前值== expectedValue
如通过指定,记忆效应VarHandle.weakCompareAndSetAcquire(java.lang.Object...)
。- 参数
-
i
- 该指数 -
expectedValue
- 期望值 -
newValue
- 新值 - 结果
-
true
如果成功 - 从以下版本开始:
- 9
-
weakCompareAndSetRelease
public final boolean weakCompareAndSetRelease(int i, E expectedValue, E newValue)
可能以原子方式设置在索引元件i
到newValue
如果该元素的当前值== expectedValue
如通过指定,记忆效应VarHandle.weakCompareAndSetRelease(java.lang.Object...)
。- 参数
-
i
- 该指数 -
expectedValue
- 预期值 -
newValue
- 新值 - 结果
-
true
若有成功 - 从以下版本开始:
- 9
-
-