CAS机制

作者: 垂直居中的句号 | 来源:发表于2021-05-17 23:05 被阅读0次

悲观锁: 假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。依靠底层提供的锁机制,会导致其他所有需要锁的线程都挂起。

synchronized独占锁 ,是一种悲观锁。

乐观锁:每次都不加锁而是假定没有冲突去完成某项工作,如果冲突会一直重试直到成功。

乐观锁会导致脏读

(脏读就是读取未提交的内容,事务A读到事务B未提交的内容,而事务B因为冲突执行失败回滚。事务A读到了B无效的修改;不可重复读:就是前后多次读,内容不一致;幻读:就是前后多次读,总数不一样)

乐观锁会基于数据库版本记录实现,事务A读取数据时也读到版本号,修改后写入的时候,会比较版本号,如果数据库版本号比事务A的大,则说明有其他事务修改了,视为过期数据,否则修改。

CAS锁机制就是  乐观锁

三个操作数 V内存位置的值,预计期望值A,更新值B

比较V与A是否相等

相等则更新为B

返回操作成功

ABA问题

就是事务A预先获取了值为1,这是A阻塞,事务B修改成2后,事务C修改成1,此时事务A又比较值是对的,但实际上已经修改了,银行取钱问题。

引入版本号比较,可解决ABA问题。

volatile 保证了共享变量的可见性,不保证原子性。

相关文章

  • 6、多线程

    synchronized关键字与CAS机制 synchronized:悲观锁CAS 机制:乐观锁当程序的并发量比较...

  • [转]Java中的CAS操作以及锁机制详解

    原文: Dyson~ - Java中的CAS操作以及锁机制详解 1. 关于CAS操作 CAS:Compare An...

  • (转载)Java CAS 和 synchronized 和 Lo

    原文链接:Java CAS 和 synchronized 和 Lock - CSDN博客 CAS 机制 适用场景:...

  • CAS知识摘抄(摘自:程序员小灰)

    什么是CAS? CAS是英文单词Compare And Swap的缩写,翻译过来就是比较并替换。 CAS机制当中使...

  • CAS机制

    还有就是这个atomic包,使用可以达到synchronized的效果,实现原理就是CAS了。 CAS也叫自旋锁,...

  • CAS机制

    加了同步锁之后,count自增的操作变成了原子性操作,所以最终输出一定是count=200,代码实现了线程安全。虽...

  • CAS机制

    CAS(Compare-And-Swap)算法保证数据操作的原子性。 CAS 算法是硬件对于并发操作共享数据的支持...

  • CAS机制

    当两个线程同时操作一个变量时,会拿到当前变量的值 如A = 0; A++此时,预期旧值则是A = 0 新值=1对...

  • CAS机制

    一、为什么需要CAS机制? 为什么需要CAS机制呢?我们先从一个错误现象谈起。我们经常使用volatile关键字修...

  • CAS机制

    原子操作 原子操作(atomic)就是不可分割的操作,在计算机中,就是指不会因为线程调度被打断的操作。通俗讲就是你...

网友评论

      本文标题:CAS机制

      本文链接:https://www.haomeiwen.com/subject/imisjltx.html