模块 java.base

类 AtomicMarkableReference<V>

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

public class AtomicMarkableReference<V> extends Object
AtomicMarkableReference 维护一个对象引用和一个标记位,可以自动更新。

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

自从:
1.5
  • 构造方法总结

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

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

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

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

    • AtomicMarkableReference

      public AtomicMarkableReference(V  initialRef, boolean initialMark)
      使用给定的初始值创建一个新的 AtomicMarkableReference
      参数:
      initialRef - 初始参考
      initialMark - 初始标记
  • 方法详情

    • getReference

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

      public boolean isMarked()
      返回标记的当前值。
      返回:
      标记的当前值
    • get

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

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

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

      public void set(V  newReference, boolean newMark)
      无条件地设置引用和标记的值。
      参数:
      newReference - 参考的新值
      newMark - 标记的新值
    • attemptMark

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