JAVA 中的 CAS

JAVA 中的 CAS

我们总结一下 JAVA 的 cas 是怎么实现的:

  • java 的 cas 利用的的是 unsafe 这个类提供的 cas 操作。
  • unsafe 的cas 依赖了的是 jvm 针对不同的操作系统实现的 Atomic::cmpxchg
  • Atomic::cmpxchg 的实现使用了汇编的 cas 操作,并使用 cpu 硬件提供的 lock信号保证其原子性

https://juejin.im/post/5a75db20f265da4e826320a9

写的很好

 

深入理解JVM之CAS原子操作(九)

独占锁是一种悲观锁,synchronized就是一种独占锁
CAS就是一种乐观锁思想的应用。
volatile并不是用来保证同步的,它的一个最大的最突出的特性就是「内存可见性」
volatile与synchronized关键字不能相提并论,使用场景不同

http://zouzls.github.io/2017/01/26/CAS%E5%8E%9F%E5%AD%90%E6%93%8D%E4%BD%9C/

你可能感兴趣的:(Java)