CAS,即compare and swap (比较交换机制)。
他有点类似乐观锁的机制,但并不是锁。
假设:
//伪代码
//假设 V是原始值
// E为期望值
// N 为新值
CAS(V,E,N){
//对V进行判断
}
如果V == E ,那么V 的值就更新为N值
反之,如果不相等,那么就不做操作,再重复读取
借用一张图来说明问题。
此外,在
java.util.concurrent.atomic;包中的所有方法都是使用的CAS策略
百度百科:
https://baike.baidu.com/item/CAS/16379801#viewPageContent
参考博文: