关于CAS的理解

来源:9-6 CAS

luyuni

2019-03-13

CAS是一种乐观锁机制的算法
核心概念是CAS(内存位置,预期值,新值)

内存位置即是共享变量的位置,使用预期值来计算新值,线程要改变内存位置的值时,会拿预期值和内存位置的值比较.

若相同则该算法会认为当前操作是线程安全的,就会更新内存位置的值
若不同,则由开发人员决定继续尝试还是进行别的操作。

分析AtomicInteger
其将变量i=0使用volatile修饰
假如线程1,2,3并发操作i++
cas1(0,0,1)cas2(0,0,1)cas3(0,0,1)
线程1进行操作更新i为1,那么此时2,3线程中的内存地址原值已经改变则cas操作失败
此时更新cas2(1,1,2)cas3(1,1,2)
假如线程3操作更新成功,那么cas2操作失败
此时更新cas3(2,2,3)
然后全部操作完成

老师我这样理解对吗?如有不对请指出,感谢老师

写回答

1回答

翔仔

2019-03-14

同学好,是可以这样理解的,通常会使用cas不断尝试,也就是写循环去尝试,直到成功或者超时:)

1
4
炫德基
回复
翔仔
解答了我的困惑~赞一个
2019-08-04
共4条回复

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8442 学习 · 1872 问题

查看课程