有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java compareAndSet返回值是否保证了“之前发生”关系?

我相信在这个问题上有很多问题被问到,但我想所有的问题都回避了我

我的问题出现了,因为我看过同一代码的变体,其中自旋锁与原子比较数据集相结合,我想关键是要确保一种先发生后发生的关系

A。get()在循环开始时执行,此ref将用作“expect”,如果在事务结束时值仍然与开始时相同,则返回

compareAndSet返回的唯一用途是从循环返回

如果Java锁被认为是自适应的,这意味着它们结合了旋转和上下文切换,那么仅仅同步主体而不是执行双嵌套旋转锁不是更方便吗,因为compareAndSet正在其中执行第二个循环

原子类似乎可以放置一个带有函数参数的方法来执行自定义事务,而不是强迫人们执行外部循环,缺少此选项是我对compareAndSet返回感到困惑的部分原因,因为返回值似乎有同样的用途,但我想不是


共 (1) 个答案

  1. # 1 楼答案

    ^{}的javadoc之后,JVM清楚地将它们视为volatile,我们可以在这里找到许多描述,包括:Java volatile and side-effects

    简短回答:是的