对乐观锁和悲观锁的理解

背景
  1. 凡是出现并发问题,第一个想到的就是锁。
  2. 什么是乐观锁?使用的场景是什么?
  3. 什么是悲观锁?使用的场景是什么?
过程
  • 乐观锁 - 整个过程是没有上锁的

    系统是一定需要支持事务的。在这样的条件下,对并发控制来说,使用乐观锁(乐观并发控制)。在读多写少的场景中,乐观锁是非常有效率的。多个线程可以同时读同样的数据。在这整个过程,会持续检测冲突,并防止多个线程尝试修改这同样的数据。整个过程中,只有一个线程会更新成功,其他会更新失败。更新失败的,会进行事务回滚,并且抛出异常。不上锁,性能高。

  • 乐观锁理解的演示例子 Mysql在乐观锁层面解决并发问题

  • 悲观锁 - 当拿到数据的一瞬间就上锁了的

    跟乐观锁的差异就是:整个过程是上锁了的,因此性能低。表现就是不会抛出异常,因为整个过程就是阻塞,等待上一个线程释放锁,自己拿到锁,然后执行逻辑即可,直到不满足业务逻辑的时候,可能要抛出异常或者给出友好提示。
    场景:写多读少,或者写和读一样频繁。

  • 悲观锁理解的演示例子Mysql的select for update理解

小结
  1. 加上对乐观锁和悲观锁的理解。
  2. 熟练使用这样的原理来解决并发问题。
  3. 理解:在读多写少的场景下,使用乐观锁。在写多读少的场景下,使用悲观锁。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值