Java面试题 - CAS是什么?

CAS是比较并交换(Compare And Swap)的缩写。

下面以原子类AtomicInteger来举例:

public class CASDemo {

    public static void main(String[] args) {
        AtomicInteger atomicInteger = new AtomicInteger(5);

        System.out.println(atomicInteger.compareAndSet(5, 2020) + "\t当前值是:" + atomicInteger.get());
        System.out.println(atomicInteger.compareAndSet(5, 2021) + "\t当前值是:" + atomicInteger.get());
    }

}

运行结果:

true	当前值是:2020
false	当前值是:2020

compareAndSet 会先检查当前值是否与期望的值是否一致,如果不一致,则修改不会成功。