- CAS、自旋、volatile内存可见性
- do-while循环直到判断条件返回true为止。该操作称为自旋。
- Unsafe 的CAS详解
- Unsafe类是整个Concurrent包的基础,里面所有方法都是native的。具体到上面提到的compareAndSetInt方法,即:
- 在Unsafe类中,只提供了三种类型的CAS操作:int、long、Object(也就是引用类型)。 这三种CAS操作都是由底层实现的,其他类型的CAS操作都要转换为这三种之一进行操作。

AtomicBoolean
- 为什么用volatile不够?
if (!flag) {flag = true;// ...} // 或者更清晰一点的:if (flag == false) {flag = true;// ...}
- 为什么用volatile不够?
ABA问题
- 我赚了100,但是被别人花了,0-100-0,这就是ABA问题
- 所以不仅要比较“值”,还要比较“版本号”
- 这就是AtomicStampedReference 所解决的问题
- AtomicMarkableReference 类似,只是里面存着的不是版本号,而是boolean
- 原子数组类
- AtomicIntegerArray、AtomicLongArray和AtomicReferenceArray
- 这里并不是说对整个数组的操作是原子的,而是针对数组中一个元素的原子操作而言。
