什么是CAS?

CompareAndSwapInt

CAS乐观锁:

多个线程使用CAS同时更新同一个变量时,只有一个线程更新变量的值其他线程被告知失败,可以再次尝试

CAS有可能带来ABA问题(1->8->1)

如果在乎:

AtomicStampedReference

每次改变都需要版本号

AtomicMarkableReference

不在乎改了多少次,只在乎改没改

如果在写回去的时候被打断了,怎么办?

写回去的时候必须保障原子性(硬件底层保证原子性)

并发编程3大特性 可见性 原子性 有序性