首页 > 编程语言 > 详细

Java_CAS实现过程

时间:2021-07-21 22:53:09      阅读:22      评论:0      收藏:0      [点我收藏+]

CAS

CAS 是指 compare and swap , compare and exchange 比较并且交换

使用 ”synchronized“ 保证线程的安全性,但是效率比较低

在 jdk5 以后增加一些原子类,保证数据的递增,不用加锁

常见的原子类:AtomicBoolean,AtomicInteger,AtomicLong

1.大致实现原理

技术分享图片

CAS工作原理:

? 线程读取到当前的值,计算结果并返回设置到内存,设置时读取内存中的是否跟线程之前读到的值相等,相等的话说明数据没有被修改过,直接把值赋上去,如果不相等的话,再次读取计算再次设置.....直到设置成功。

CAS底层实现:

? JVM 虚拟机实现,时使用 C++ 实现的。

ABA问题:

? 线程再次设置值的时候发现值与自己读取的相等,这时可能经过多个线程的修改,修改之后值没变。这就是ABA问题。

如何避免ABA问题:

  • ? 加上版本号,判断值是否相等,再判断版本号是否一致。
  • ? 加上布尔值,判断是否修改过。

Java_CAS实现过程

原文:https://www.cnblogs.com/coolyang/p/15041000.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!