9分37秒处,其它线程即使改了state会导致cas失败?
来源:4-9 AQS之面试官:讲讲你对Java提供AQS的理解

weixin_慕慕1188446
2021-03-27
图中的state应该是修改后立即内存可见吧,localState立即能获取到state的值
我理解的cas过程是下面这样
UnSafe.cas(&state, localState, localState - 1), 相当于sql 中的 update state = localState - 1 where localState = state, 这里的state内存可见才能达到视频中讲的效果吧, 也就是说这里色localState = state和AtomicInteger中的volatile value是一个意思,都是获取最新的内存值
老仙,帮我看下以上理解正确吗
写回答
1回答
-
用于cas的变量必须是volatile,不然会有一致性问题
112021-03-28
相似问题