1.概念:CAS的全称为Compare-And-Swap,是一条CPU并发原语。
它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的。
示例:
CAS并发原语体现在JAVA的sun.misc.Unsafe类中的各个方法。调用 UnSafe类中的CAS方法,JVM会帮我们实现出CAS汇编范畴。这是一种完全依赖于硬件的操作。
2.CAS底层思想
观察AtomicInteger中的getAndIncrement()方法,
变量valueOffset表示在内存中偏移地址,value被volatile关键字修饰,保证了可见性
这个方法就是借助UnSafe类中的getAndAddInt()方法实现的。
再进入UnSafe类内部,找到getAndAddInt()方法,
解释: