文章目录
参考
https://mp.weixin.qq.com/s/WtAdXvaRuBZ-SXayIKu1mA
乐观锁
CAS(Compare And Swap 比较并且替换)
- 是乐观锁的一种实现方式
- 是一种轻量级锁
- JUC 中很多工具类的实现就是基于 CAS 的。
线程在读取数据时不进行加锁,在准备写回数据时,先去查询原值,操作的时候比较原值是否修改,若未被其他线程修改则写回,若已被修改,则重新执行读取流程。
CAS 整体是一个原子操作
例子
AtomicInteger 自增函数 incrementAndGet() 就是这样实现的,其中就有大量循环判断的过程,直到符合条件才成功。
实践
订单表,流水表