java.lang.Object
java.util.concurrent.atomic.AtomicReference<V>
- 类型参数:
-
V
- 此引用所引用对象的类型
- 所有已实现的接口:
-
Serializable
可以被原子方式更新的对象引用。查看
VarHandle
规范以了解原子访问的属性描述。
- 自 JDK 版本:
- 1.5
- 另请参阅:
-
Constructor Summary
ConstructorDescription创建一个具有空初始值的新 AtomicReference。AtomicReference
(V initialValue) 创建一个具有给定初始值的新 AtomicReference。 -
Method Summary
Modifier and TypeMethodDescriptionfinal V
accumulateAndGet
(V x, BinaryOperator<V> accumulatorFunction) 使用给定函数将当前值和给定值的结果原子更新(具有由VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果),返回更新后的值。final V
compareAndExchange
(V expectedValue, V newValue) 如果当前值(称为“见证值”)== expectedValue
,则以原子方式将值设置为newValue
,具有由VarHandle.compareAndExchange(java.lang.Object...)
指定的内存效果。final V
compareAndExchangeAcquire
(V expectedValue, V newValue) 如果当前值(称为“见证值”)== expectedValue
,则以原子方式将值设置为newValue
,具有由VarHandle.compareAndExchangeAcquire(java.lang.Object...)
指定的内存效果。final V
compareAndExchangeRelease
(V expectedValue, V newValue) 如果当前值(称为“见证值”)== expectedValue
,则以原子方式将值设置为newValue
,具有由VarHandle.compareAndExchangeRelease(java.lang.Object...)
指定的内存效果。final boolean
compareAndSet
(V expectedValue, V newValue) final V
get()
返回当前值,具有由VarHandle.getVolatile(java.lang.Object...)
指定的内存效果。final V
返回当前值,具有由VarHandle.getAcquire(java.lang.Object...)
指定的内存效果。final V
getAndAccumulate
(V x, BinaryOperator<V> accumulatorFunction) 使用给定函数将当前值和给定值的结果原子更新(具有由VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果),返回先前的值。final V
将值原子设置为newValue
并返回旧值,具有由VarHandle.getAndSet(java.lang.Object...)
指定的内存效果。final V
getAndUpdate
(UnaryOperator<V> updateFunction) 使用给定函数将当前值原子更新为给定函数的结果,返回先前的值,具有由VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果。final V
返回当前值,具有由VarHandle.getOpaque(java.lang.Object...)
指定的内存效果。final V
getPlain()
返回当前值,具有读取内存语义,就好像变量被声明为非volatile
。final void
将值设置为newValue
,具有由VarHandle.setRelease(java.lang.Object...)
指定的内存效果。final void
将值设置为newValue
,具有由VarHandle.setVolatile(java.lang.Object...)
指定的内存效果。final void
将值设置为newValue
,具有由VarHandle.setOpaque(java.lang.Object...)
指定的内存效果。final void
将值设置为newValue
,具有设置内存语义,就好像变量被声明为非volatile
和非final
。final void
setRelease
(V newValue) 将值设置为newValue
,具有由VarHandle.setRelease(java.lang.Object...)
指定的内存效果。toString()
返回当前值的字符串表示形式。final V
updateAndGet
(UnaryOperator<V> updateFunction) 使用给定函数将当前值原子更新为给定函数的结果,返回更新后的值,具有由VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果。final boolean
weakCompareAndSet
(V expectedValue, V newValue) 已弃用。final boolean
weakCompareAndSetAcquire
(V expectedValue, V newValue) 如果当前值== expectedValue
,则可能以原子方式将值设置为newValue
,具有由VarHandle.weakCompareAndSetAcquire(java.lang.Object...)
指定的内存效果。final boolean
weakCompareAndSetPlain
(V expectedValue, V newValue) 如果当前值== expectedValue
,则可能以原子方式将值设置为newValue
,具有由VarHandle.weakCompareAndSetPlain(java.lang.Object...)
指定的内存效果。final boolean
weakCompareAndSetRelease
(V expectedValue, V newValue) 如果当前值== expectedValue
,则可能以原子方式将值设置为newValue
,具有由VarHandle.weakCompareAndSetRelease(java.lang.Object...)
指定的内存效果。final boolean
weakCompareAndSetVolatile
(V expectedValue, V newValue) 如果当前值== expectedValue
,则可能以原子方式将值设置为newValue
,具有由VarHandle.weakCompareAndSet(java.lang.Object...)
指定的内存效果。
-
Constructor Details
-
AtomicReference
创建一个具有给定初始值的新 AtomicReference。- 参数:
-
initialValue
- 初始值
-
AtomicReference
public AtomicReference()创建一个具有空初始值的新 AtomicReference。
-
-
Method Details
-
get
返回当前值,具有由VarHandle.getVolatile(java.lang.Object...)
指定的内存效果。- 返回:
- 当前值
-
set
将值设置为newValue
,具有由VarHandle.setVolatile(java.lang.Object...)
指定的内存效果。- 参数:
-
newValue
- 新值
-
lazySet
将值设置为newValue
,具有由VarHandle.setRelease(java.lang.Object...)
指定的内存效果。- 参数:
-
newValue
- 新值 - 自 JDK 版本:
- 1.6
-
compareAndSet
- 参数:
-
expectedValue
- 期望的值 -
newValue
- 新值 - 返回:
-
如果成功则返回
true
。返回false
表示实际值不等于期望值。
-
weakCompareAndSet
Deprecated.This method has plain memory effects but the method name implies volatile memory effects (see methods such ascompareAndExchange(V, V)
andcompareAndSet(V, V)
). To avoid confusion over plain or volatile memory effects it is recommended that the methodweakCompareAndSetPlain(V, V)
be used instead.如果当前值== expectedValue
,则可能以原子方式将值设置为newValue
,具有由VarHandle.weakCompareAndSetPlain(java.lang.Object...)
指定的内存效果。- 参数:
-
expectedValue
- 期望的值 -
newValue
- 新值 - 返回:
-
如果成功则返回
true
- 另请参阅:
-
weakCompareAndSetPlain
如果当前值== expectedValue
,则可能以原子方式将值设置为newValue
,具有由VarHandle.weakCompareAndSetPlain(java.lang.Object...)
指定的内存效果。- 参数:
-
expectedValue
- 期望的值 -
newValue
- 新值 - 返回:
-
如果成功则返回
true
- 自 JDK 版本:
- 9
-
getAndSet
将值设置为newValue
并返回旧值,具有由VarHandle.getAndSet(java.lang.Object...)
指定的内存效果。- 参数:
-
newValue
- 新值 - 返回:
- 先前的值
-
getAndUpdate
原子地使用给定函数的结果更新当前值(具有由VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果),返回先前的值。该函数应该是无副作用的,因为在线程之间发生争用导致尝试更新失败时可能会重新应用该函数。- 参数:
-
updateFunction
- 无副作用的函数 - 返回:
- 先前的值
- 自版本:
- 1.8
-
updateAndGet
原子地使用给定函数的结果更新当前值(具有由VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果),返回更新后的值。该函数应该是无副作用的,因为在线程之间发生争用导致尝试更新失败时可能会重新应用该函数。- 参数:
-
updateFunction
- 无副作用的函数 - 返回:
- 更新后的值
- 自版本:
- 1.8
-
getAndAccumulate
原子地使用给定函数将当前值与当前值和给定值的结果更新(具有由VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果),返回先前的值。该函数应该是无副作用的,因为在线程之间发生争用导致尝试更新失败时可能会重新应用该函数。该函数将当前值作为第一个参数应用,并将给定的更新作为第二个参数应用。- 参数:
-
x
- 更新值 -
accumulatorFunction
- 两个参数的无副作用函数 - 返回:
- 先前的值
- 自版本:
- 1.8
-
accumulateAndGet
原子地使用给定函数将当前值与当前值和给定值的结果更新(具有由VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果),返回更新后的值。该函数应该是无副作用的,因为在线程之间发生争用导致尝试更新失败时可能会重新应用该函数。该函数将当前值作为第一个参数应用,并将给定的更新作为第二个参数应用。- 参数:
-
x
- 更新值 -
accumulatorFunction
- 两个参数的无副作用函数 - 返回:
- 更新后的值
- 自版本:
- 1.8
-
toString
返回当前值的字符串表示形式。 -
getPlain
返回当前值,具有读取内存语义,就好像变量被声明为非volatile
。- 返回:
- 值
- 自版本:
- 9
-
setPlain
将值设置为newValue
,具有设置内存语义,就好像变量被声明为非volatile
和非final
。- 参数:
-
newValue
- 新值 - 自版本:
- 9
-
getOpaque
返回当前值,具有由VarHandle.getOpaque(java.lang.Object...)
指定的内存效果。- 返回:
- 值
- 自版本:
- 9
-
setOpaque
将值设置为newValue
,具有由VarHandle.setOpaque(java.lang.Object...)
指定的内存效果。- 参数:
-
newValue
- 新值 - 自版本:
- 9
-
getAcquire
返回当前值,具有由VarHandle.getAcquire(java.lang.Object...)
指定的内存效果。- 返回:
- 值
- 自版本:
- 9
-
setRelease
将值设置为newValue
,具有由VarHandle.setRelease(java.lang.Object...)
指定的内存效果。- 参数:
-
newValue
- 新值 - 自版本:
- 9
-
compareAndExchange
如果当前值(称为见证值)== expectedValue
,则原子地将值设置为newValue
,具有由VarHandle.compareAndExchange(java.lang.Object...)
指定的内存效果。- 参数:
-
expectedValue
- 期望的值 -
newValue
- 新值 - 返回:
- 见证值,如果成功将与期望值相同
- 自版本:
- 9
-
compareAndExchangeAcquire
如果当前值(称为见证值)== expectedValue
,则原子地将值设置为newValue
,具有由VarHandle.compareAndExchangeAcquire(java.lang.Object...)
指定的内存效果。- 参数:
-
expectedValue
- 期望的值 -
newValue
- 新值 - 返回:
- 见证值,如果成功将与期望值相同
- 自版本:
- 9
-
compareAndExchangeRelease
如果当前值(称为见证值)== expectedValue
,则原子地将值设置为newValue
,具有由VarHandle.compareAndExchangeRelease(java.lang.Object...)
指定的内存效果。- 参数:
-
expectedValue
- 期望的值 -
newValue
- 新值 - 返回:
- 见证值,如果成功将与期望值相同
- 自版本:
- 9
-
weakCompareAndSetVolatile
如果当前值== expectedValue
,则可能原子地将值设置为newValue
,具有由VarHandle.weakCompareAndSet(java.lang.Object...)
指定的内存效果。- 参数:
-
expectedValue
- 期望的值 -
newValue
- 新值 - 返回:
-
如果成功则
true
- 自版本:
- 9
-
weakCompareAndSetAcquire
如果当前值== expectedValue
,则可能原子地将值设置为newValue
,具有由VarHandle.weakCompareAndSetAcquire(java.lang.Object...)
指定的内存效果。- 参数:
-
expectedValue
- 期望的值 -
newValue
- 新值 - 返回:
-
如果成功则
true
- 自版本:
- 9
-
weakCompareAndSetRelease
如果当前值== expectedValue
,则可能原子地将值设置为newValue
,具有由VarHandle.weakCompareAndSetRelease(java.lang.Object...)
指定的内存效果。- 参数:
-
expectedValue
- 期望的值 -
newValue
- 新值 - 返回:
-
如果成功则
true
- 自版本:
- 9
-
compareAndExchange(V, V)
和compareAndSet(V, V)
等方法)。