CAS
2022-07-07 14:34:18 12 举报
JAVA CAS
作者其他创作
大纲/内容
相等
内存值
不相等
AtomicInteger atomicInteger = new AtomicInteger(0); atomicInteger.incrementAndGet(); //自增1
在我操作的过程中其他线程修改了值
CAS: compare and swap(比较并交换)
比较C和当前新值N
更新为新值V
开始
从内存读取当前值C(内存初始值是0)
结束
read
N还是内存值,因为这中间有可能被其他线程修改,所以要再次读取出来比较确定是否被更改了
计算结果值V(自增1,结果为1)
ABA问题
其他线程修改了数次,但是最后修改值和原值一样
0 条评论
下一页