Module  java.base

Class AtomicMarkableReference<V>

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


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

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

    从以下版本开始:
    1.5
    • 构造方法摘要

      构造方法  
      Constructor 描述
      AtomicMarkableReference​(V initialRef, boolean initialMark)
      用给定的初始值创建一个新的 AtomicMarkableReference
    • 方法摘要

      所有方法  接口方法  具体的方法 
      Modifier and Type 方法 描述
      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

        参数
        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如果成功