• java并发编程:线程安全管理类--原子操作类--AtomicStampedReference<V>


    1.类 AtomicStampedReference<V>

      AtomicStampedReference 维护带有整数“标志”的对象引用,可以用原子方式对其进行更新。

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

    2.构造函数

    AtomicStampedReference

    public AtomicStampedReference(V initialRef,
                                  int initialStamp)
    创建具有给定初始值的新 AtomicStampedReference
    参数:
    initialRef - 初始引用
    initialStamp - 初始标志

    3.方法详解

    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
  • 相关阅读:
    7-4 找出不是两个数组共有的元素(20 分)
    7-2 删除重复字符(20 分)
    7-1 兔子繁衍问题(15 分)
    1018 Public Bike Management (30分) (迪杰斯特拉+dfs)
    PAT 1014 Waiting in Line (30分) 一个简单的思路
    1010 Radix (25分)
    试题编号: 201809-4 试题名称: 再卖菜 记忆化搜索
    试题编号: 201903-3 试题名称: 损坏的RAID5
    CCF 试题编号: 201909-4 试题名称: 推荐系统
    洛谷P3809 后缀数组模板
  • 原文地址:https://www.cnblogs.com/tonylovett/p/5254777.html
Copyright © 2020-2023  润新知