CAS机制
CAS机制的全称Compare-And-Swap,是一种乐观锁,原子类的底层实现机制就是CAS机制。它的功能是判断某个位置的是否是预期值,如果是则修改,这个过程是原子的。即线程在写数据到主内存时,会拿原读取到的主内存中的值的副本与主内存做比较,如果相等(也就是期望值)时,才将要修改的值写入到主内存。此时,其他线程操作失败,需重新读取数据、比较、写入的操作重新执行,也称为自旋。
CAS的缺点:
1、如果CAS失败,会一致进行自旋尝试,如果CAS长时间不成功,可能给cpu带来很大的开销。
2、只能保证一个共享变量的原子操作
3、引出ABA问题
什么是ABA问题:
用户1购买了3个库存,于是库存要设置为2
用户2购买了2个库存,于是库存要设置为3
这两个设置库存的接口并发执行,库存会先变成2,再变成3,导致数据不一致(实际卖出了5件商品,但库存只扣减了2,最后一次设置库存会覆盖和掩盖前一次并发操作)
所以:CAS不能保证多个数据的最终一致性。
解决方案:保证这个值时原来的值。原子引用类。