Module java.base

Class AtomicReference<V>

java.lang.Object
java.util.concurrent.atomic.AtomicReference<V>
类型参数:
V - 此引用所引用对象的类型
所有已实现的接口:
Serializable

public class AtomicReference<V> extends Object implements Serializable
可以被原子方式更新的对象引用。查看VarHandle规范以了解原子访问的属性描述。
自 JDK 版本:
1.5
另请参阅:
  • Constructor Details

    • AtomicReference

      public AtomicReference(V initialValue)
      创建一个具有给定初始值的新 AtomicReference。
      参数:
      initialValue - 初始值
    • AtomicReference

      public AtomicReference()
      创建一个具有空初始值的新 AtomicReference。
  • Method Details

    • 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 - 新值
      自 JDK 版本:
      1.6
    • compareAndSet

      public final boolean compareAndSet(V expectedValue, V newValue)
      如果当前值== expectedValue,则以原子方式将值设置为newValue,具有由VarHandle.compareAndSet(java.lang.Object...)指定的内存效果。
      参数:
      expectedValue - 期望的值
      newValue - 新值
      返回:
      如果成功则返回true。返回false表示实际值不等于期望值。
    • weakCompareAndSet

      @Deprecated(since="9") public final boolean weakCompareAndSet(V expectedValue, V newValue)
      Deprecated.
      This method has plain memory effects but the method name implies volatile memory effects (see methods such as compareAndExchange(V, V) and compareAndSet(V, V)). To avoid confusion over plain or volatile memory effects it is recommended that the method weakCompareAndSetPlain(V, V) be used instead.
      如果当前值== expectedValue,则可能以原子方式将值设置为newValue,具有由VarHandle.weakCompareAndSetPlain(java.lang.Object...)指定的内存效果。
      参数:
      expectedValue - 期望的值
      newValue - 新值
      返回:
      如果成功则返回true
      另请参阅:
    • weakCompareAndSetPlain

      public final boolean weakCompareAndSetPlain(V expectedValue, V newValue)
      如果当前值== expectedValue,则可能以原子方式将值设置为newValue,具有由VarHandle.weakCompareAndSetPlain(java.lang.Object...)指定的内存效果。
      参数:
      expectedValue - 期望的值
      newValue - 新值
      返回:
      如果成功则返回true
      自 JDK 版本:
      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
    • toString

      public String toString()
      返回当前值的字符串表示形式。
      覆盖:
      toString 在类 Object
      返回:
      当前值的字符串表示形式
    • 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)
      如果当前值(称为见证值== expectedValue,则原子地将值设置为newValue,具有由VarHandle.compareAndExchange(java.lang.Object...)指定的内存效果。
      参数:
      expectedValue - 期望的值
      newValue - 新值
      返回:
      见证值,如果成功将与期望值相同
      自版本:
      9
    • compareAndExchangeAcquire

      public final V compareAndExchangeAcquire(V expectedValue, V newValue)
      如果当前值(称为见证值== expectedValue,则原子地将值设置为newValue,具有由VarHandle.compareAndExchangeAcquire(java.lang.Object...)指定的内存效果。
      参数:
      expectedValue - 期望的值
      newValue - 新值
      返回:
      见证值,如果成功将与期望值相同
      自版本:
      9
    • compareAndExchangeRelease

      public final V compareAndExchangeRelease(V expectedValue, V newValue)
      如果当前值(称为见证值== expectedValue,则原子地将值设置为newValue,具有由VarHandle.compareAndExchangeRelease(java.lang.Object...)指定的内存效果。
      参数:
      expectedValue - 期望的值
      newValue - 新值
      返回:
      见证值,如果成功将与期望值相同
      自版本:
      9
    • weakCompareAndSetVolatile

      public final boolean weakCompareAndSetVolatile(V expectedValue, V newValue)
      如果当前值== expectedValue,则可能原子地将值设置为newValue,具有由VarHandle.weakCompareAndSet(java.lang.Object...)指定的内存效果。
      参数:
      expectedValue - 期望的值
      newValue - 新值
      返回:
      如果成功则true
      自版本:
      9
    • weakCompareAndSetAcquire

      public final boolean weakCompareAndSetAcquire(V expectedValue, V newValue)
      如果当前值== expectedValue,则可能原子地将值设置为newValue,具有由VarHandle.weakCompareAndSetAcquire(java.lang.Object...)指定的内存效果。
      参数:
      expectedValue - 期望的值
      newValue - 新值
      返回:
      如果成功则true
      自版本:
      9
    • weakCompareAndSetRelease

      public final boolean weakCompareAndSetRelease(V expectedValue, V newValue)
      如果当前值== expectedValue,则可能原子地将值设置为newValue,具有由VarHandle.weakCompareAndSetRelease(java.lang.Object...)指定的内存效果。
      参数:
      expectedValue - 期望的值
      newValue - 新值
      返回:
      如果成功则true
      自版本:
      9