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

最新文章

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

热门文章

  1. 开源项目托管GitHub
  2. HDU1560 DNA sequence(IDA*)题解
  3. ActiveMQ 集群配置 高可用
  4. BZOJ4401: 块的计数 思维题
  5. 【TCP/IP详解 卷一:协议】第二章:链路层
  6. python 基数排序
  7. DB中字段为null,为空,为空字符串,为空格要怎么过滤取出有效值
  8. Flex布局兼容知识点总结
  9. MongoDB(课时7 逻辑运算)
  10. HDU 4054 Number String