Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

【并发编程】CAS到底是什么 PDF 下载


分享到:
时间:2024-05-12 10:10来源:http://www.java1234.com 作者:转载  侵权举报
【并发编程】CAS到底是什么
失效链接处理
【并发编程】CAS到底是什么 PDF 下载
 
 
 
相关截图:
 


主要内容:
 
1、什么是CAS
CAS是 Compare-And-Swap (比较并交换)的缩写,是一种轻量级的同步机制,主要用于实现
多线程环境下的无锁算法和数据结构,保证了并发安全性。它可以在不使用锁(如synchronized
Lock)的情况下,对共享数据进行线程安全的操作。
CAS操作主要有三个参数:要更新的内存位置、期望的值和新值。CAS操作的执行过程如下:
1. 首先,获取要更新的内存位置的值,记为var
2. 然后,将期望值expectedvar进行比较,如果两者相等,则将内存位置的值var更新为
新值new
3. 如果两者不相等,则说明有其他线程修改了内存位置的值var,此时CAS操作失败,需要重
新尝试。
 
2、原理相关的Unsafe
前面提到,CAS是一种原子操作。那么Java是怎样来使用CAS的呢?我们知道,在Java中,如果
一个方法是native的,那Java就不负责具体实现它,而是交给底层的JVM使用c或者c+ 去实现。
UnsafeJDK提供的一个不安全的类,它提供了一些底层的操作,包括内存操作、线程调度、
对象实例化等。它的作用是让Java可以在底层直接操作内存,从而提高程序的效率。但是,由于
Unsafe类是不安全的,所以只有JDK开发人员才能使用它,普通开发者不建议使用。它里面大多是一
些 native 方法,其中就有几个关于CAS的:
 
1 boolean compareAndSwapObject(Object o, long offset,Object expected,
Object x);
2 boolean compareAndSwapInt(Object o, long offset,int expected,int x);
3 boolean compareAndSwapLong(Object o, long offset,long expected,long
x);

 

具体的实现过程如下:
1. 调用 compareAndSwapInt 、 compareAndSwapLong 
compareAndSwapObject 方法时,会传入三个参数,分别是需要修改的变量V、期望的
A和新值B
2. 方法会先读取变量V的当前值,如果当前值等于期望的值A,则使用新值B来更新变量V,否
则不做任何操作。
3. 方法会返回更新操作是否成功的标志,如果更新成功,则返回true,否则返回false
由于CAS操作是基于底层硬件支持的原子性指令来实现的,所以它可以保证操作的原子性和线程
安全性,同时也可以避免使用锁带来的性能开销。因此,CAS操作广泛应用于并发编程中,比如实现
无锁数据结构、实现线程安全的计数器等。
 
3、原子操作类解析
前面说到Unsafe类中的几个支持CAS的方法,而在Java中便有这么一些类应用到了这些方法,
其中一类便是原子操作相关类,在juc包中的atomic包下。
 


 
 
------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐