CAS
1、什么是CAS?
**CAS的全称:**Compare-And-Swap(比较并交换)。比较变量的现在值与之前的值是否一致,若一致则替换,否则不替换。
**CAS的作用:**原子性更新变量值,保证线程安全。
**CAS指令:**需要有三个操作数,变量的当前值(V),旧的预期值(A),准备设置的新值(B)。
**CAS指令执行条件:**当且仅当V=A时,处理器才会设置V=B,否则不执行更新。
**CAS的返回指:**V的之前值。
**CAS处理过程:**原子操作,执行期间不会被其他线程中断,线程安全。
**CAS并发原语:**体现在Java语言中sun.misc.Unsafe类的各个方法。调用UnSafe类中的CAS方法,JVM会帮我们实现出CAS汇编指令,这是一种完全依赖于硬件的功能,通过它实现了原子操作。由于CAS是一种系统原语,原语属于操作系统用于范畴,是由若干条指令
组成,用于完成某个功能的一个过程,并且原语的执行必须是连续的,在执行过程中不允许被中断,所以CAS是一条CPU的原子指令,不会造成所谓的数据不一致的问题,所以CAS是线程安全的。
2、CAS有什么问题?
线程可能会出现循环多次的问题,因为其他线程可能将主内存的值又改了,但是某个线程拿到的还是老的数据,