| 失效链接处理 | 
| 
      【并发编程】CAS到底是什么 PDF 下载 
	相关截图: 
![]() 主要内容: 
		1、什么是CAS 
	
		CAS是 Compare-And-Swap (比较并交换)的缩写,是一种轻量级的同步机制,主要用于实现 
	
		多线程环境下的无锁算法和数据结构,保证了并发安全性。它可以在不使用锁(如synchronized、 
	
		Lock)的情况下,对共享数据进行线程安全的操作。 
	
		CAS操作主要有三个参数:要更新的内存位置、期望的值和新值。CAS操作的执行过程如下: 
	
		1. 首先,获取要更新的内存位置的值,记为var。 
	
		2. 然后,将期望值expected与var进行比较,如果两者相等,则将内存位置的值var更新为 
	
		新值new。 
	
		3. 如果两者不相等,则说明有其他线程修改了内存位置的值var,此时CAS操作失败,需要重 
	
		新尝试。 
	
		2、原理相关的Unsafe类 
	
		前面提到,CAS是一种原子操作。那么Java是怎样来使用CAS的呢?我们知道,在Java中,如果 
	
		一个方法是native的,那Java就不负责具体实现它,而是交给底层的JVM使用c或者c+ 去实现。 
	
		Unsafe类是JDK提供的一个不安全的类,它提供了一些底层的操作,包括内存操作、线程调度、 
	
		对象实例化等。它的作用是让Java可以在底层直接操作内存,从而提高程序的效率。但是,由于 
	
		Unsafe类是不安全的,所以只有JDK开发人员才能使用它,普通开发者不建议使用。它里面大多是一 
	
		些 native 方法,其中就有几个关于CAS的: 
	
		
 
			具体的实现过程如下: 
		
			1. 调用 compareAndSwapInt 、 compareAndSwapLong 或 
		
			compareAndSwapObject 方法时,会传入三个参数,分别是需要修改的变量V、期望的 
		
			值A和新值B。 
		
			2. 方法会先读取变量V的当前值,如果当前值等于期望的值A,则使用新值B来更新变量V,否 
		
			则不做任何操作。 
		
			3. 方法会返回更新操作是否成功的标志,如果更新成功,则返回true,否则返回false。 
		
			由于CAS操作是基于底层硬件支持的原子性指令来实现的,所以它可以保证操作的原子性和线程 
		
			安全性,同时也可以避免使用锁带来的性能开销。因此,CAS操作广泛应用于并发编程中,比如实现 
		
			无锁数据结构、实现线程安全的计数器等。 
		
			3、原子操作类解析 
		
			前面说到Unsafe类中的几个支持CAS的方法,而在Java中便有这么一些类应用到了这些方法, 
		
			其中一类便是原子操作相关类,在juc包中的atomic包下。 
		 | 
    




    
苏公网安备 32061202001004号


    