什么是CAS?
什么是CAS?
CompareAndSwapInt
CAS乐观锁:
多个线程使用CAS同时更新同一个变量时,只有一个线程更新变量的值其他线程被告知失败,可以再次尝试
CAS有可能带来ABA问题(1->8->1)
如果在乎:
AtomicStampedReference
每次改变都需要版本号
AtomicMarkableReference
不在乎改了多少次,只在乎改没改
如果在写回去的时候被打断了,怎么办?
写回去的时候必须保障原子性(硬件底层保证原子性)
并发编程3大特性 可见性 原子性 有序性
评论