CAS原理 Compare And Swap (比较、交换)轻量级锁、无锁、自旋锁
先跟期望值比较,如果数据的真实值跟期望值不同,则说明数据已经被其他线程修改过,返回false。
CAS是一条cpu指令cmpxchg,所以是原子操作(单cpu时 cmpxchg 多cpu时 lock cmpxchg)
全称 lock-锁总线 compare and exchange
无锁算法一般是把cas套在死循环里,一直重试,直到返回成功(乐观锁思想)
AtomicStampedReference相比于AtomicReference内部除了value,还多维护一个时间戳,可以解决“ABA问题”(其他线程可能修改了目标值两次,当前线程会认为没有修改过,导致业务逻辑出错)