我知道 CompareAndSwap 在 Java 并发中用于 AtomicInteger.incrementAndGet() 等方法的引擎盖下,它像无限循环一样工作,直到它成功并阻塞它的线程它将内存位置的内容与给定值进行比较,并且仅当它们相同时,才将该内存位置的内容修改为新的给定值。这是作为单个原子操作完成的。原子性保证根据最新信息计算新值;如果该值同时被另一个线程更新,则写入将失败。操作的结果必须表明它是否执行了替换;这可以通过简单的布尔响应(这种变体通常称为比较和设置)来完成,也可以通过返回从内存位置读取的值(而不是写入其中的值)来完成。那么incrementAndGet() 中内存位置的给定值和内容是什么?
1 回答
慕容3067478
TA贡献1773条经验 获得超3个赞
例如,当一个线程看到当前值时,1
它会将其递增为2
as given value
,并与2
当前时刻内存中的实际值进行比较。
如果成功,2
将返回。
否则,它将检索最新的值,假设它x
,并增加到x + 1
给定的值。
...
这个过程会一直持续到比较成功为止。
添加回答
举报
0/150
提交
取消