原子操作cas

一、概念,

基于处理器指令,把比较和交换合成一个指令完成,保证了原子性;

因为是针对一个内存地址值的,一个内存地址指向一个变量,所以只对一个共享变量能保证原子性;

 

 二、原子操作类

锁只有synchronized和显示锁;

cas不是锁,是处理器指令原子操作;

多线程下的cas原子操作,只会有一个线程操作成功;

1、

 

1、

 2、用原子操作类对该引用类对象包装

不是版本戳引用原子操作类,原子操作类的对象中,直接将对应地址值赋予期望值作为新值;

原子操作类包装值是变成了期望值,原子操作类包装的引用对象还是没变;

java一切皆为对象,相当于原子操作类包装后自己也是一个对象;

3、版本戳的原子操作类

 

当第二个线程来改值时候,发现值被别的线程改过了,版本号变了,则conpareAndSet方法返回false, 没有改成自己想改的期望值,还是保留别人改过后的值和版本号;

 

 4、数组的原子操作类

 三、

   

原文地址:https://www.cnblogs.com/wmqiang/p/11671608.html