返回介绍

java.util.concurrent.atomic 类 AtomicMarkableReference<V>

发布于 2019-10-04 09:51:48 字数 5959 浏览 1028 评论 0 收藏 0

java.lang.Object
  └java.util.concurrent.atomic.AtomicMarkableReference<V>
类型参数:
V - 此引用所引用的对象类型

public class AtomicMarkableReference<V>
extends Object
 

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

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

从以下版本开始:
1.5

构造方法摘要
AtomicMarkableReference(VinitialRef, booleaninitialMark)

使用给定的初始值创建新的 AtomicMarkableReference

方法摘要
booleanattemptMark(VexpectedReference, booleannewMark)

如果当前引用 == 预期引用,则以原子方式将该标记的值设置为给定的更新值。

booleancompareAndSet(VexpectedReference, VnewReference, booleanexpectedMark, booleannewMark)

如果当前引用 == 预期引用,并且当前标记等于预期标记,那么以原子方式将引用和标记的值设置为给定的更新值。

Vget(boolean[]markHolder)

返回该引用和该标记的当前值。

VgetReference()

返回该引用的当前值。

booleanisMarked()

返回该标记的当前值。

voidset(VnewReference, booleannewMark)

无条件地同时设置该引用和标记的值。

booleanweakCompareAndSet(VexpectedReference, VnewReference, booleanexpectedMark, booleannewMark)

如果当前引用 == 预期引用,并且当前标记等于预期标记,那么以原子方式将引用和标记的值设置为给定的更新值。

从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

构造方法详细信息

AtomicMarkableReference

public AtomicMarkableReference(VinitialRef,
                               booleaninitialMark)
使用给定的初始值创建新的 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 - 大小至少为 1 的数组。返回时, markholder[0] 将保存该标记的值。
返回:
该引用的当前值

weakCompareAndSet

public boolean weakCompareAndSet(VexpectedReference,
                                 VnewReference,
                                 booleanexpectedMark,
                                 booleannewMark)
如果当前引用 == 预期引用,并且当前标记等于预期标记,那么以原子方式将引用和标记的值设置为给定的更新值。此操作的任何给定调用都可能会意外失败(返回 false ),但是在当前值保持预期值而且没有其他线程也在尝试设置该值时,重复调用将最终获得成功。
参数:
expectedReference - 该引用的预期值
newReference - 该引用的新值
expectedMark - 该标记的预期值
newMark - 该标记的新值
返回:
如果成功,则返回 true

compareAndSet

public boolean compareAndSet(VexpectedReference,
                             VnewReference,
                             booleanexpectedMark,
                             booleannewMark)
如果当前引用 == 预期引用,并且当前标记等于预期标记,那么以原子方式将引用和标记的值设置为给定的更新值。
参数:
expectedReference - 该引用的预期值
newReference - 该引用的新值
expectedMark - 该标记的预期值
newMark - 该标记的新值
返回:
如果成功,则返回 true

set

public void set(VnewReference,
                booleannewMark)
无条件地同时设置该引用和标记的值。
参数:
newReference - 该引用的新值
newMark - 该标记的新值

attemptMark

public boolean attemptMark(VexpectedReference,
                           booleannewMark)
如果当前引用 == 预期引用,则以原子方式将该标记的值设置为给定的更新值。此操作的任何给定调用都可能会意外失败(返回 false ),但是在当前值保持预期值而且没有其他线程也在尝试设置该值时,重复调用将最终获得成功。
参数:
expectedReference - 该引用的预期值
newMark - 该标记的新值
返回:
如果成功,则返回 true

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文