栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

详细介绍CAS机制

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

详细介绍CAS机制

CAS其实就是乐观锁的一种实现方式,其优点就是不需要加锁就能进行原子操作,而悲观锁比较典型的就是Java中的synchronized

CAS全称compare and swap——比较并替换

它是并发条件下修改数据的一种机制,包含三个操作数:
需要修改的数据的内存地址(V);
对这个数据的旧预期值(A);
需要将它修改为的值(B);

CAS的操作步骤如下:

1.修改前记录数据的内存地址V;
2.读取数据的当前的值,记录为A;
3.修改数据的值变为B;
4.查看地址V下的值是否仍然为A,若为A,则用B替换它;若地址V下的值不为A,表示在自己修改的过程中,其他的线程对数据进行了修改,则不更新变量的值,而是重新从步骤2开始执行,这被称为自旋;

通过以上四个步骤对内存中的数据进行修改,就可以保证数据修改的原子性。

Java并不能像C或C++一样,直接操作内存,但是JVM为我们提供了一个后门,就是sun.misc.Unsafe类,这个类为我们实现了很多硬件级别的原子方法,当然,这些方法都是native方法,使用其他语言实现,而不是Java方法。

unsafe.compareAndSwapInt(this, valueOffset, expect, update)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/946747.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号