「每天一道面试题」如何理解CAS中的ABA问题及如何解决!

「每天一道面试题」如何理解CAS中的ABA问题及如何解决!

一个变量V,如果变量V初次读取的时候是A,并且在准备赋值的时候检查到它仍然是A,不能说明它的值没有被其他线程修改过了,因为可能在这段期间它的值曾经被改成了B,然后又改回A,那CAS操作就会误认为它从来没有被修改过。

可以使用java并发包中的原子引用类"AtomicStampedReference",它可以通过控制变量值的版本来保证CAS的正确性。