Atomic原子操作类提供了一种用法简单, 性能高效, 线程安全的变量更新方式.
今天就以AtomicInteger为例,看看它是如何做到的....继续深入Unsafe类中的compareAndSwapInt方法, 这个方法是native方式调用C++实现的....this.compareAndSwapInt(var1, var2, var5, var5 + var4));
return var5;
}
逻辑很简单, 利用CAS机制, 将value值更新为计算后的值...ABA问题
另外CAS, 也有ABA问题, 也就是一个线程将值修改为B, 另一个线程又修改回A, 导致数据像没修改过一样....ABA问题可以利用以下两个类解决: AtomicStampedReference或者AtomicMarkableReference