cas会将内存值V与旧值A比较,若相等则将新值B赋给A。
CAS 利用 CPU 指令保证了操作的原子性,以达到锁的效果,自旋就是循环,一般是用一个for循环实现。这样一来,一个无限循环中,执行一个 CAS 操作,当操作成功,返回 true 时,循环结束;当返回 false 时,接着执行循环,继续尝试 CAS 操作,直到返回 true。(java并发包java.util.concurrent.*的核心就是CAS自旋原理)
CAS的自旋操作就是当内存中的值V与预期值B不相等时会从头开始计算一遍并循环比较直到相等。
cas缺点:
1,如果值不相等则进行自旋操作
2,ABA问题:当读取内存值V的时候,有一个线程将A改为B,后又改为A,CAS会误认为内存值V没有改变,这称为CAS操作的ABA问题;
cas
最新推荐文章于 2021-01-20 01:21:21 发布