并发编程
乐观锁理论:
冲突检测和数据更新,
CAS 理论:
compare and set
相对于synchronized 这种阻塞方式,CAS采用的是非阻塞算法,可以很大提升性能
包含三个操作数 :内存值V 预期值A,新值B
查看内存位置V是否与预期值A一致,如果是更新为B, 如果不匹配,不做任何操作
CAS理论存在ABA 问题:
ABA问题:
比如说 一个线程one 从位置V 取出数据A,这时候另外一个线程two从内存中取出A,并且two进行了一些操作变成了B
然后two 又将V位置的数据变成A,这时候 one发现数据库内存的值仍然为A,那么one线程操作成功,但是这个过程是有问题的
乐观锁实现是通过版本号 来解决ABA问题,每次修改版本号都会加1 一旦版本号与数据版本号一致,就可以执行修改操作,并对版本号进行+1操作。
public class AtomicInteger exte