- java.lang.Object
-
- java.util.concurrent.atomic.AtomicReference<V>
-
- 参数类型
-
V
- 此引用引用的对象的类型
- All Implemented Interfaces:
-
Serializable
public class AtomicReference<V> extends Object implements Serializable
可以原子更新的对象引用。 有关原子访问属性的说明,请参阅VarHandle
规范。- 从以下版本开始:
- 1.5
- 另请参见:
- Serialized Form
-
-
构造方法摘要
构造方法 Constructor 描述 AtomicReference()
使用null初始值创建新的AtomicReference。AtomicReference(V initialValue)
用给定的初始值创建一个新的AtomicReference。
-
方法摘要
所有方法 接口方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 V
accumulateAndGet(V x, BinaryOperator<V> accumulatorFunction)
将当前值与给定函数应用于当前值和给定值的原子更新(具有VarHandle.compareAndSet(java.lang.Object...)
指定的存储器效果),返回更新后的值。V
compareAndExchange(V expectedValue, V newValue)
原子将值设置为newValue
如果当前值,被称为 证人值 ,== expectedValue
如通过指定,记忆效应VarHandle.compareAndExchange(java.lang.Object...)
。V
compareAndExchangeAcquire(V expectedValue, V newValue)
原子将值设置为newValue
如果当前值,被称为 证人值 ,== expectedValue
如通过指定,记忆效应VarHandle.compareAndExchangeAcquire(java.lang.Object...)
。V
compareAndExchangeRelease(V expectedValue, V newValue)
原子将值设置为newValue
如果当前值,被称为 证人值 ,== expectedValue
如通过指定,记忆效应VarHandle.compareAndExchangeRelease(java.lang.Object...)
。boolean
compareAndSet(V expectedValue, V newValue)
如果当前值为== expectedValue
,newValue
设置为== expectedValue
,具有VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果。V
get()
返回当前值,具有VarHandle.getVolatile(java.lang.Object...)
指定的内存效果。V
getAcquire()
返回当前值,具有VarHandle.getAcquire(java.lang.Object...)
指定的内存效果。V
getAndAccumulate(V x, BinaryOperator<V> accumulatorFunction)
将当前值与给定函数应用于当前值和给定值的原子更新(具有VarHandle.compareAndSet(java.lang.Object...)
指定的存储器效应),返回上一个值。V
getAndSet(V newValue)
将值设置为newValue
并返回旧值,具有VarHandle.getAndSet(java.lang.Object...)
所指定的内存效果。V
getAndUpdate(UnaryOperator<V> updateFunction)
使用给定函数的结果对当前值进行原子更新(具有VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果),返回上一个值。V
getOpaque()
返回当前值,具有VarHandle.getOpaque(java.lang.Object...)
指定的内存效果。V
getPlain()
返回当前值,具有读取的内存语义,就好像变量被声明为非volatile
。void
lazySet(V newValue)
将值设置为newValue
,具有VarHandle.setRelease(java.lang.Object...)
指定的内存效果。void
set(V newValue)
将值设置为newValue
,具有VarHandle.setVolatile(java.lang.Object...)
指定的内存效果。void
setOpaque(V newValue)
将值设置为newValue
,具有VarHandle.setOpaque(java.lang.Object...)
指定的内存效果。void
setPlain(V newValue)
将值设置为newValue
,具有设置的内存语义,就像该变量被声明为非volatile
final
。void
setRelease(V newValue)
将值设置为newValue
,其记忆效应由VarHandle.setRelease(java.lang.Object...)
指定。String
toString()
返回当前值的String表示形式。V
updateAndGet(UnaryOperator<V> updateFunction)
使用给定函数的结果对当前值进行原子更新(具有VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果),返回更新的值。boolean
weakCompareAndSet(V expectedValue, V newValue)
已过时。该方法具有简单的记忆效应,但方法名称表示易失性记忆效应(参见方法如compareAndExchange(V, V)
和compareAndSet(V, V)
)。 为了避免在简单或易失性记忆效应上的混淆,建议使用方法weakCompareAndSetPlain(V, V)
。boolean
weakCompareAndSetAcquire(V expectedValue, V newValue)
可能原子将值设置为newValue
如果当前值== expectedValue
如通过指定,记忆效应VarHandle.weakCompareAndSetAcquire(java.lang.Object...)
。boolean
weakCompareAndSetPlain(V expectedValue, V newValue)
可能原子将值设置为newValue
如果当前值== expectedValue
如通过指定,记忆效应VarHandle.weakCompareAndSetPlain(java.lang.Object...)
。boolean
weakCompareAndSetRelease(V expectedValue, V newValue)
可能原子将值设置为newValue
如果当前值== expectedValue
如通过指定,记忆效应VarHandle.weakCompareAndSetRelease(java.lang.Object...)
。boolean
weakCompareAndSetVolatile(V expectedValue, V newValue)
可能原子将值设置为newValue
如果当前值== expectedValue
如通过指定,记忆效应VarHandle.weakCompareAndSet(java.lang.Object...)
。
-
-
-
构造方法详细信息
-
AtomicReference
public AtomicReference(V initialValue)
用给定的初始值创建一个新的AtomicReference。- 参数
-
initialValue
- 初始值
-
AtomicReference
public AtomicReference()
使用null初始值创建新的AtomicReference。
-
-
方法详细信息
-
get
public final V get()
返回当前值,具有VarHandle.getVolatile(java.lang.Object...)
指定的内存效果。- 结果
- 当前值
-
set
public final void set(V newValue)
将值设置为newValue
,具有VarHandle.setVolatile(java.lang.Object...)
指定的内存效果。- 参数
-
newValue
- 新值
-
lazySet
public final void lazySet(V newValue)
将值设置为newValue
,具有VarHandle.setRelease(java.lang.Object...)
指定的内存效果。- 参数
-
newValue
- 新值 - 从以下版本开始:
- 1.6
-
compareAndSet
public final boolean compareAndSet(V expectedValue, V newValue)
如果当前值为== expectedValue
,newValue
设置为== expectedValue
,具有由VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果。- 参数
-
expectedValue
- 期望值 -
newValue
- 新值 - 结果
-
true
如果成功。 False return表示实际值不等于预期值。
-
weakCompareAndSet
@Deprecated(since="9") public final boolean weakCompareAndSet(V expectedValue, V newValue)
已过时。 该方法具有明显的记忆效应,但方法名称表示易失性记忆效应(参见方法如compareAndExchange(V, V)
和compareAndSet(V, V)
)。 为了避免在平常或易失性记忆效应上的混乱,建议使用方法weakCompareAndSetPlain(V, V)
。可能原子将值设置为newValue
如果当前值== expectedValue
如通过指定,记忆效应VarHandle.weakCompareAndSetPlain(java.lang.Object...)
。- 参数
-
expectedValue
- 预期值 -
newValue
- 新的价值 - 结果
-
true
如果成功 - 另请参见:
-
weakCompareAndSetPlain(V, V)
-
weakCompareAndSetPlain
public final boolean weakCompareAndSetPlain(V expectedValue, V newValue)
可能原子将值设置为newValue
如果当前值== expectedValue
如通过指定,记忆效应VarHandle.weakCompareAndSetPlain(java.lang.Object...)
。- 参数
-
expectedValue
- 期望值 -
newValue
- 新值 - 结果
-
true
如果成功 - 从以下版本开始:
- 9
-
getAndSet
public final V getAndSet(V newValue)
将值设置为newValue
并返回旧值,具有VarHandle.getAndSet(java.lang.Object...)
指定的内存效果。- 参数
-
newValue
- 新价值 - 结果
- 以前的值
-
getAndUpdate
public final V getAndUpdate(UnaryOperator<V> updateFunction)
使用给定函数的结果对当前值进行原子更新(具有VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果),返回上一个值。 该功能应该是无副作用的,因为尝试的更新由于线程之间的争用而失败时可能会被重新应用。- 参数
-
updateFunction
- 无副作用的功能 - 结果
- 以前的值
- 从以下版本开始:
- 1.8
-
updateAndGet
public final V updateAndGet(UnaryOperator<V> updateFunction)
使用给定函数的结果对当前值进行原子更新(具有VarHandle.compareAndSet(java.lang.Object...)
指定的存储器效果),返回更新的值。 该功能应该是无副作用的,因为尝试的更新由于线程之间的争用而失败时可能会被重新应用。- 参数
-
updateFunction
- 无副作用的功能 - 结果
- 更新的值
- 从以下版本开始:
- 1.8
-
getAndAccumulate
public final V getAndAccumulate(V x, BinaryOperator<V> accumulatorFunction)
将当前值与给定函数应用于当前值和给定值进行原子更新(具有VarHandle.compareAndSet(java.lang.Object...)
指定的存储器效果),返回上一个值。 该功能应该是无副作用的,因为尝试的更新由于线程之间的争用而失败时可能会被重新应用。 该函数应用当前值作为其第一个参数,给定的更新作为第二个参数。- 参数
-
x
- 更新值 -
accumulatorFunction
- 两个参数的无效函数 - 结果
- 以前的值
- 从以下版本开始:
- 1.8
-
accumulateAndGet
public final V accumulateAndGet(V x, BinaryOperator<V> accumulatorFunction)
将当前值与给定函数应用于当前值和给定值进行原子更新(具有VarHandle.compareAndSet(java.lang.Object...)
指定的存储器效应),返回更新后的值。 该功能应该是无副作用的,因为尝试的更新由于线程之间的争用而失败时可能会被重新应用。 该函数应用当前值作为其第一个参数,给定的更新作为第二个参数。- 参数
-
x
- 更新值 -
accumulatorFunction
- 两个参数的无效副作用 - 结果
- 更新的值
- 从以下版本开始:
- 1.8
-
getPlain
public final V getPlain()
返回当前值,具有读取的内存语义,就好像变量被声明为非volatile
。- 结果
- 价值
- 从以下版本开始:
- 9
-
setPlain
public final void setPlain(V newValue)
将值设置为newValue
,具有设置的内存语义,如同该变量被宣告为非volatile
和非final
。- 参数
-
newValue
- 新值 - 从以下版本开始:
- 9
-
getOpaque
public final V getOpaque()
返回当前值,具有VarHandle.getOpaque(java.lang.Object...)
指定的内存效果。- 结果
- 价值
- 从以下版本开始:
- 9
-
setOpaque
public final void setOpaque(V newValue)
将值设置为newValue
,具有VarHandle.setOpaque(java.lang.Object...)
指定的内存效果。- 参数
-
newValue
- 新值 - 从以下版本开始:
- 9
-
getAcquire
public final V getAcquire()
返回当前值,具有VarHandle.getAcquire(java.lang.Object...)
指定的内存效果。- 结果
- 价值
- 从以下版本开始:
- 9
-
setRelease
public final void setRelease(V newValue)
将值设置为newValue
,具有VarHandle.setRelease(java.lang.Object...)
指定的内存效果。- 参数
-
newValue
- 新值 - 从以下版本开始:
- 9
-
compareAndExchange
public final V compareAndExchange(V expectedValue, V newValue)
原子将值设置为newValue
如果当前值,被称为 证人值 ,== expectedValue
如通过指定,记忆效应VarHandle.compareAndExchange(java.lang.Object...)
。- 参数
-
expectedValue
- 预期值 -
newValue
- 新值 - 结果
- 见证价值,如果成功,将与预期价值相同
- 从以下版本开始:
- 9
-
compareAndExchangeAcquire
public final V compareAndExchangeAcquire(V expectedValue, V newValue)
原子将值设置为newValue
如果当前值,被称为 证人值 ,== expectedValue
如通过指定,记忆效应VarHandle.compareAndExchangeAcquire(java.lang.Object...)
。- 参数
-
expectedValue
- 期望值 -
newValue
- 新值 - 结果
- 见证价值,如果成功,将与预期价值相同
- 从以下版本开始:
- 9
-
compareAndExchangeRelease
public final V compareAndExchangeRelease(V expectedValue, V newValue)
原子将值设置为newValue
如果当前值,被称为 证人值 ,== expectedValue
如通过指定,记忆效应VarHandle.compareAndExchangeRelease(java.lang.Object...)
。- 参数
-
expectedValue
- 预期值 -
newValue
- 新值 - 结果
- 见证价值,如果成功,将与预期价值相同
- 从以下版本开始:
- 9
-
weakCompareAndSetVolatile
public final boolean weakCompareAndSetVolatile(V expectedValue, V newValue)
可能原子将值设置为newValue
如果当前值== expectedValue
如通过指定,记忆效应VarHandle.weakCompareAndSet(java.lang.Object...)
。- 参数
-
expectedValue
- 期望值 -
newValue
- 新值 - 结果
-
true
如果成功 - 从以下版本开始:
- 9
-
weakCompareAndSetAcquire
public final boolean weakCompareAndSetAcquire(V expectedValue, V newValue)
可能原子将值设置为newValue
如果当前值== expectedValue
如通过指定,记忆效应VarHandle.weakCompareAndSetAcquire(java.lang.Object...)
。- 参数
-
expectedValue
- 期望值 -
newValue
- 新值 - 结果
-
true
如果成功 - 从以下版本开始:
- 9
-
weakCompareAndSetRelease
public final boolean weakCompareAndSetRelease(V expectedValue, V newValue)
可能原子将值设置为newValue
如果当前值== expectedValue
如通过指定,记忆效应VarHandle.weakCompareAndSetRelease(java.lang.Object...)
。- 参数
-
expectedValue
- 期望值 -
newValue
- 新值 - 结果
-
true
如果成功 - 从以下版本开始:
- 9
-
-