为了账号安全,请及时绑定邮箱和手机立即绑定

比较在 AtomicInteger.incrementAndGet()

比较在 AtomicInteger.incrementAndGet()

qq_花开花谢_0 2021-10-20 16:26:28
我知道 CompareAndSwap 在 Java 并发中用于 AtomicInteger.incrementAndGet() 等方法的引擎盖下,它像无限循环一样工作,直到它成功并阻塞它的线程它将内存位置的内容与给定值进行比较,并且仅当它们相同时,才将该内存位置的内容修改为新的给定值。这是作为单个原子操作完成的。原子性保证根据最新信息计算新值;如果该值同时被另一个线程更新,则写入将失败。操作的结果必须表明它是否执行了替换;这可以通过简单的布尔响应(这种变体通常称为比较和设置)来完成,也可以通过返回从内存位置读取的值(而不是写入其中的值)来完成。那么incrementAndGet() 中内存位置的给定值和内容是什么?
查看完整描述

1 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

例如,当一个线程看到当前值时,1它会将其递增为2as given value,并与2当前时刻内存中的实际值进行比较。

如果成功,2将返回。

否则,它将检索最新的值,假设它x,并增加到x + 1给定的值。

...

这个过程会一直持续到比较成功为止。


查看完整回答
反对 回复 2021-10-20
  • 1 回答
  • 0 关注
  • 178 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信