模块 java.base

类 AtomicStampedReference<V>

java.lang.Object
java.util.concurrent.atomic.AtomicStampedReference<V>
类型参数:
V - 此引用引用的对象类型

public class AtomicStampedReference<V> extends Object
AtomicStampedReference 维护一个对象引用以及一个可以自动更新的整数“戳记”。

实现注意事项:此实现通过创建表示“盒装”[reference, integer] 对的内部对象来维护标记引用。

自从:
1.5
  • 构造方法总结

    构造方法
    构造方法
    描述
    AtomicStampedReference(V initialRef, int initialStamp)
    使用给定的初始值创建一个新的 AtomicStampedReference
  • 方法总结

    修饰符和类型
    方法
    描述
    boolean
    attemptStamp(V expectedReference, int newStamp)
    如果当前引用是 == 到预期引用,则以原子方式将标记的值设置为给定的更新值。
    boolean
    compareAndSet(V expectedReference, V newReference, int expectedStamp, int newStamp)
    如果当前引用是 == 到预期引用并且当前戳记等于预期戳记,则以原子方式将引用和戳记的值设置为给定的更新值。
    V
    get(int[] stampHolder)
    返回引用和标记的当前值。
    V
    返回引用的当前值。
    int
    返回标记的当前值。
    void
    set(V newReference, int newStamp)
    无条件地设置引用和标记的值。
    boolean
    weakCompareAndSet(V expectedReference, V newReference, int expectedStamp, int newStamp)
    如果当前引用是 == 到预期引用并且当前戳记等于预期戳记,则以原子方式将引用和戳记的值设置为给定的更新值。

    在类 java.lang.Object 中声明的方法

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 构造方法详细信息

    • AtomicStampedReference

      public AtomicStampedReference(V  initialRef, int initialStamp)
      使用给定的初始值创建一个新的 AtomicStampedReference
      参数:
      initialRef - 初始参考
      initialStamp - 初始邮票
  • 方法详情

    • getReference

      public V  getReference()
      返回引用的当前值。
      返回:
      参考的当前值
    • getStamp

      public int getStamp()
      返回标记的当前值。
      返回:
      邮票的当前值
    • get

      public V  get(int[] stampHolder)
      返回引用和标记的当前值。典型用法是 int[1] holder; ref = v.get(holder);
      参数:
      stampHolder - 大小至少为 1 的数组。返回时,stampHolder[0] 将保留邮票的值。
      返回:
      参考的当前值
    • weakCompareAndSet

      public boolean weakCompareAndSet(V  expectedReference, V  newReference, int expectedStamp, int newStamp)
      如果当前引用是 == 到预期引用并且当前戳记等于预期戳记,则以原子方式将引用和戳记的值设置为给定的更新值。此操作可能会虚假地失败并且不提供排序保证,因此很少是 compareAndSet 的合适替代方案。
      参数:
      expectedReference - 参考的期望值
      newReference - 参考的新值
      expectedStamp - 邮票的预期值
      newStamp - 邮票的新值
      返回:
      true 如果成功
    • compareAndSet

      public boolean compareAndSet(V  expectedReference, V  newReference, int expectedStamp, int newStamp)
      如果当前引用是 == 到预期引用并且当前戳记等于预期戳记,则以原子方式将引用和戳记的值设置为给定的更新值。
      参数:
      expectedReference - 参考的期望值
      newReference - 参考的新值
      expectedStamp - 邮票的预期值
      newStamp - 邮票的新值
      返回:
      true 如果成功
    • set

      public void set(V  newReference, int newStamp)
      无条件地设置引用和标记的值。
      参数:
      newReference - 参考的新值
      newStamp - 邮票的新值
    • attemptStamp

      public boolean attemptStamp(V  expectedReference, int newStamp)
      如果当前引用是 == 到预期引用,则以原子方式将标记的值设置为给定的更新值。此操作的任何给定调用都可能虚假地失败(返回 false ),但当当前值保持预期值并且没有其他线程也试图设置该值时重复调用最终将成功。
      参数:
      expectedReference - 参考的期望值
      newStamp - 邮票的新值
      返回:
      true 如果成功