java并发编程:线程安全管理类--原子操作类--AtomicMarkableReference<V>
2024-10-12 17:13:12
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
最新文章
- Python(七)Socket编程、IO多路复用、SocketServer
- Tomcat中的Session小结
- 【Hibernate框架】关联映射(一对一关联映射)
- c# unity PlayerPrefs 游戏存档,直白点就是讲游戏数据本地保存下来
- 作业三 代码规范 代码复审 PSP
- JavaScript排序算法——插入排序
- C++中全局变量的那些事儿
- BZOJ 1688: [Usaco2005 Open]Disease Manangement 疾病管理
- Punycode与中文互转
- uploadify不能正确显示中文的按钮文本的解决办法
- 12个非常有用的JavaScript小技巧
- Python-第一天
- java命令行HPROF Profiler(转)
- SSM-MyBatis-04:Mybatis中使用properties整合jdbc.properties
- SQL反模式学习笔记22 伪键洁癖,整理数据
- [邀月博客] SQL Server 2008中SQL增强之二:Top新用途
- Python字典小结
- Confluence 6 用户目录图例 - 可读写连接 LDAP
- gets() 与 scanf() 的小尴尬
- c# 未能加载文件或程序集