cas介绍
CAS的底层是lock cmpxchg 指令(X86架构),在单核CPU和多核CPU下都能保证【比较-交换】的原子性。
- 在多核状态下,某个核执行到带lock的指令时,CPU会让总线锁住,当这个核把此指令执行完毕,再开启总线。这个过程中不会被线程的调度机制所打断,保证了多个线程对内存操作的准确性,是原子的。
CAS必须借助volatile才能读取到共享变量的最新值来实现【比较并交换】的效果。
结合CAS和volatile可以实现无锁并发,适用于线程数少、多核CPU的场景下。
- CAS是基于乐观锁思想:最乐观的估计,不怕别的线程来修改共享变量,就算改了也没关系,吃亏点在重试。
- synchronized 是基于悲观锁的思想:最悲观的估计,得防着其它线程来修改共享变量,我上了锁你们都别想改,我改完了解开锁,你们才有机会。
- CAS体现的是无锁并发、无阻塞并发
- 因为没有使用synchronized,所以线程不会陷入阻塞,这是提升效率的因素之一
- 但如果竞争激烈,可以想到重试必然频繁发生,反而效率会受影响

浙公网安备 33010602011771号