简介
CAS (Compare and swap),比较交换。拿旧值A和值V比较,如果相同,则修改为新值B。
ABA问题
如果一个值原来是A,后面更改为B,再更改为A,使用CAS方式则不能发现值已经发生变化了。
ABA问题解决方案
加入版本库,类似于数据库乐观锁。
如1A,2B,3A
JDK1.5开始提供了AtomicStampedReference来解决此问题。
CAS (Compare and swap),比较交换。拿旧值A和值V比较,如果相同,则修改为新值B。
如果一个值原来是A,后面更改为B,再更改为A,使用CAS方式则不能发现值已经发生变化了。
加入版本库,类似于数据库乐观锁。
如1A,2B,3A
JDK1.5开始提供了AtomicStampedReference来解决此问题。