在CAS操做中,会出现ABA问题。java
public final int incrementAndGet() { for (;;) { int current = get(); int next = current + 1; if (compareAndSet(current, next)) return next; } } //这个方法的作法为先获取到当前的 value 属性值, // 而后将 value 加 1,赋值给一个局部的 next 变量, // 然而,这两步都是非线程安全的, //可是内部有一个死循环,不断去作compareAndSet操做,直到成功为止, // 也就是修改的根本在compareAndSet方法里面,compareAndSet()方法的