目录
一、走进CAS
(一)基本知识快速回顾
(二)CAS 的原子性实际上是硬件 CPU 直接保证的
Java 层次
JVM 层次
硬件层次
总结
(三)性能检测说明
二、理解乐观锁
(一)直观的理解
(二)乐观锁适用于读多写少的情况的原因
(三)悲观锁在读多写少的情况下也有冲突少的特点,为什么不适合呢?
(四)案例:乐观锁实现余额更新
三、整体理解
(一)CAS机制和乐观锁思想
(二)深入源码扩展
四、总结
干货分享,感谢您的阅读!
synchronized是 Java 内置的同步机制,依赖 JVM 实现,通过进入和退出监视器锁(Monitor Lock)来保证线程的安全性。在高并发情况下,线程可能会频繁地在BLOCKED状态和RUNNABLE状态之间切换,导致用户态和内核态的频繁切换,从而影响性能。
而Lock(如ReentrantLock)是基于 AQS 实现,通过使用自旋锁和非阻塞算法,减少了用户态和内核态的切换,提高了性能。
与 synchronized 的实现方式不同,AQS中很多数据结构的变化,都是依赖 CAS 进行操作的,而CAS 就是乐观锁的一种实现。