11 深入理解CAS
CAS
什么是CAS
大厂必须要深入研究底层!
public class CASDemo {
//CAS compareAndSet 比较并交换!
public static void main(String[] args) {
AtomicInteger atomicInteger = new AtomicInteger(2020);
// public final boolean compareAndSet(int expect, int update)
//如果我们期望的值达到了 那么就更新,否则就不更新
atomicInteger.compareAndSet(2020,2021);
System.out.println(atomicInteger.get());
atomicInteger.getAndIncrement();
atomicInteger.compareAndSet(2020,2021);
System.out.println(atomicInteger.get());
}
}
unsafe类
CAS:比较当前工作内存中的值和主内存中的值,如果这个值是期望的,那么则执行操作!如果不是就一直循环
缺点:
1、循环会耗时
2、一次性只能保证一个共享的变量的原子性
3、会存在ABA问题