zoukankan      html  css  js  c++  java
  • java并发编程:线程安全管理类--原子操作类--AtomicMarkableReference<V>

    1.类 AtomicMarkableReference<V>

      public class AtomicMarkableReference<V>extends Object

      AtomicMarkableReference 维护带有标记位的对象引用,可以原子方式对其进行更新。

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

    2.构造函数详解

    AtomicMarkableReference

    public AtomicMarkableReference(V initialRef,
                                   boolean initialMark)
    创建具有给定初始值的新 AtomicMarkableReference
    参数:
    initialRef - 初始引用
    initialMark - 初始标记

    3.方法详解

    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
  • 相关阅读:
    pl/sql配置-本地不安装oracle-登录pl/sql
    js中查看js对象的属性
    eos中nui提交表单
    Window clearTimeout() 方法与setTimeout
    小程序---app.json文件的配置,全局的,对所有页面都适用
    css--加载中样式
    Vue+axios请求本地json
    vue中通过方法返回data中的对象是这个{__ob__: Observer},怎么处理 呢???
    解决 canvas 绘图在高清屏中的模糊问题
    总结:活动类开发必知必会
  • 原文地址:https://www.cnblogs.com/tonylovett/p/5254725.html
Copyright © 2011-2022 走看看