CAS机制(atomic系列)

一段代码,两个线程操作一个数

线程不安全,改良加锁

性能低,改良用atomic

atomic实现机制CAS机制

CAS机制:修改内存中变量A的值从10到11的过程:

1、查询出A,旧值为10

2、update A,判断A的当前值是否为10(如果有其他线程修改过就不为10了),如果为10  ,更新值到11

3、如果不为10,则自旋(重复上边动作)  成功为止

优点:

和同步锁比较:一个悲观所一个是乐观锁

缺点:

1、大并发消耗cpu

2、只能控制到变量,无法到代码块

3、ABA问题

什么是ABA问题:

线程1获取变量值为10,此时其他线程抢占资源,将值改成11,然后又将值从11改回10,  然后线程1获取资源继续执行发现变量值还是10没有改变, 所以他认为变量是不变的 ,   但有些场景此值是变动过的。

解决:增加版本号,update的时候不紧要比较值还要比较版本号

猜你喜欢

转载自blog.csdn.net/u011064905/article/details/81128716