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问题

posted @ 2021-08-23 18:32  flypiggg  阅读(39)  评论(0)    收藏  举报