JDK中CAS操作及ABA问题如果解决

CAS的全称是compare-and-swap,即比较和交换。虽然看起来的先比较再交换,无法保证原子性,其实其利用的是底层硬件,是一条CPU的原子指令,是线程安全的。jdk中的juc包中的线程安全性,都是基于CAS实现的。其处理过程是:CAS操作需要输出两个数值,其一是旧值(操作前的值),其二是新值,在操作期间先比较一下旧值是否发生的变化,如果没有变化,则用新值替换旧值,否则不交换。
阅读更多