一 什么叫CAS?
CAS是乐观锁的一种实现,是一种轻量级锁,CAS操作流程如下:线程在读取数据时不加锁,在准备写回数据时,比较原值是否被修改,若未被修改则写回,否则重新执行读取流程。
二 CAS可能会遇到ABA问题?
ABA是指,前面数据由别的线程,从A修改为B,再由B修改为A,这时候CAS判断原值时,依然判断通过,但是并不能感知到数据被修改的过程。
三 如何解决ABA问题?
方法一:给数据设定版本号,比较原值时还需比较版本号。
方法二:给数据设定时间戳,比较原值时还需比较时间戳。