Compare And Swap,比较并交换,它是一条CPU并发原语。功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的。
调用Unsafe类中的CAS方法,JVM会帮我们实现出CAS的汇编指令,这是依赖与硬件的功能实现的原子操作。CAS是一种系统原语,原语属于操作系统用于范畴,是由若干条指令组成,用于完成某个功能的一个过程,并且原语的执行必须是连续的,执行过程中不允许被中断,也就是说CAS是一条CPU的原子指令,不会造成数据不一致问题
自旋锁,Unsafe类
atomicInteger.getAndIncrement()的源码:
unsafe.getAndAddInt()方法的源码:
synchronized加锁,同一时间段只允许有一个线程能访问,一致性得到了保障,但是并发性下降;CAS反复进行比较,直到比较成功,这样既保证了一致性,又提高了并发性
如果循环时间长,开销很大
只能保障一个共享变量的原子操作
ABA问题
AtomicStampedReference,带时间戳的原子引用
原文:https://www.cnblogs.com/zhouxuezheng/p/14961567.html