CasDemo
/**
* CAS:(compareAndSet)比较并交换
* CAS -> UnSafe -> CAS底层思想 -> ABA -> 原子引用更新 -> 如何规避ABA问题
*/
public class CasDemo {
public static void main(String[] args) {
AtomicInteger atomicInteger = new AtomicInteger(5);
// 与其中存在的5 比较,如果相等,赋值2020
System.out.println(atomicInteger.compareAndSet(5,2020) + ", current data: " + atomicInteger.get());
// 与赋值成功的2020比较,如果相等,赋值1024,如果不相等,不做操作。
System.out.println(atomicInteger.compareAndSet(5,1024) + ", current data: " + atomicInteger.get());
}
}
结果:
true, current data: 2020
false, current data: 2020