什么是cas

2024-11-28 百科达人 阅读 投稿:本站作者

CAS 是Compare and Swap的缩写,即我们所说的比较与交换。

CAS是一种基于锁的操作,且是乐观锁。

在java中锁分为【乐观锁】和【悲观锁】。

【乐观锁】:采取的是一种宽泛的态度,通过某种方式不加锁来处理资源,比如通过给记录加版本号(version)来获取数据,性能比较【悲观锁】有很大的提升。

【悲观锁】:是将资源锁住,等之前获得锁的线程释放锁之后,下一个线程才可以访问。

CAS操作包含三个操作数,内存位置(V)、预期原值(A)和新值(B)。如果内存地址里面的值和预期原值的值时一样的,那么就将内存里面的值更新成新值。CAS是通过无限循环来获取数据的,如果在第一轮循环中,a线程获取地址里面的值,被b线程修改了,那么a线程需要自旋,到下次循环才有可能会执行。

java.util.concurrent.atomic包下的类,大多数使用CAS操作来实现的。【AtomicInteger、AtomicBoolean、AtomicLong】

声明:闻科网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系756005163@qq.com