模块  java.base

Class AtomicMarkableReference<V>

  • 参数类型
    V - 此引用引用的对象类型

    public class AtomicMarkableReference<V>extends Object
    AtomicMarkableReference维护对象引用以及标记位,可以原子方式更新。

    实现说明:此实现通过创建表示“盒装”[引用,布尔]对的内部对象来维护可标记引用。

    从以下版本开始:
    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 getReference()
      返回引用的当前值。
      boolean isMarked()
      返回标记的当前值。
      void set​(V newReference, boolean newMark)
      无条件地设置引用和标记的值。
      boolean weakCompareAndSet​(V expectedReference, V newReference, boolean expectedMark, boolean newMark)
      如果当前参考值为 ==并且当前标记等于预期标记,则以原子方式将参考值和标记的值设置为给定的更新值。
    • 构造方法详细信息

      • 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 - 大小至少为一的数组。 返回时, markHolder[0]将保留标记的值。
        结果
        参考的当前值
      • weakCompareAndSet

        public boolean weakCompareAndSet​(V expectedReference,                                 V newReference,                                 boolean expectedMark,                                 boolean newMark)
        如果当前参考值为==并且当前标记等于预期标记,则以原子方式将参考值和标记的值设置为给定的更新值。

        May fail spuriously and does not provide ordering guarantees ,所以很少是compareAndSet的合适替代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如果成功