CAS (Compare And Swap or Compare And Set)

  • Compare And Swap 比较并交换 (读取 > 修改 > CAS 拿之前读取值和现存值一致时执行交换)
  • java实现类 Unsafe ,解释为 Compare And Set
  • 原子操作 cpu底层支持
  • Compare不通过时,自旋 重新执行 读取 > ... (while true 实现)
  • ABA 问题 (读取为0 交换时也为0 但是在 读取 -> 交换的过程中 其他线程修改为 N 再 修改为 0 ) 类似乐观锁 读取记录标识 修改更改标识 jdk有默认实现
  • cas 对应汇编代码 lock cmpxchg (首先会判断是否是多个cpu 多个cpu会加锁)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容