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)
然后全部操作完成
老师我这样理解对吗?如有不对请指出,感谢老师