乐观锁与悲观锁的区别?
创作时间:
作者:
@小白创作中心
乐观锁与悲观锁的区别?
引用
CSDN
1.
https://blog.csdn.net/weixin_53391173/article/details/139212082
首先来看乐观锁。顾名思义,乐观锁就是持比较乐观态度的锁。乐观锁在操作数据时非常乐观,认为别的线程不会同时修改数据,所以不会上锁,但是在更新的时候会判断在此期间别的线程有没有更新过这个数据。
反之,悲观锁就是持悲观态度的锁。悲观锁在操作数据时比较悲观,每次操作数据的时候都认为别的线程也会同时修改数据,所以每次操作数据的时候都会上锁,这样别的线程想拿到这个数据就会阻塞,直到它拿到锁。举个例子,有时候我们上公共厕所的时候要排队,如下图所示。
如果你蹲马桶的时候开着门,外面有人就会排着队看着你。你会这么做吗?当然,如果在自己家里,有可能会这么干,这就是乐观锁。虽然能进到房间,但是有人占着坑位,该排队还是得排队。比如数据库提供的 write_condition 机制,以及JavaAPI并发工具包下面的原子变量类,就是使用了乐观锁的CAS 来实现的。
悲观锁就不同了,就相当于进房间之后,第一件事就是把门锁上,在门外排队等候的人不知道里面发生了什么,又着急但是又只能干等着。比如行锁、表锁、读锁、写锁,都是在操作之前先上锁,JavaAPI中的synchronized 和ReentrantLock 等独占锁都是悲观锁的实现。
根据前面对两种锁的介绍,总结一下两种锁的应用场景。
首先来看乐观锁,它适用于写少读多的情况,也就是说减少操作冲突,这样可以省去锁竞争的开销,提高系统的吞吐量。而悲观锁呢,它适用于写多读少的情况。因为,如果还使用观锁,会经常出现操作冲突,这样会导致应用层不断地重试,反而会降低系统的性能。
热门推荐
形容一厢情愿或者单相思诗句
古代盖房子,用的哪些建筑材料?
教育之道:拒绝体罚,倡导沟通与理解
股票有什么买入信号:股票买入信号的识别与应用
如何利用智能数据化分析物流状态增加安全性
周易入门看什么书好
《易经》重要版本及其特点:从《周易》到《易纬》
ROI测算与实际偏差过大怎么办
如何维护花园住宅的环境?花园住宅的维护成本和效益分析如何?
《最后的晚餐》解析
中国新能源汽车产业未来展望与投资蓝图:2025至2031年深度剖析
如何管理自己的情绪?OH卡牌帮你解决!
如何提高员工安全意识
脉络膜裂囊肿是什么病
铁路旅游再次风靡全球,中国发挥主要影响
深入解析:Ki67指标高是否意味着预后不良?揭示事实背后的科学
茶叶冲泡三大黄金法则:水温、时间与比例详解
机动战士高达UC剧情解析与深度剖析
要想更好的沉浸式游戏体验,硬件该怎么搭配?
雪莲果:一种高性价比的通便润肠水果
天天吃雪莲果的好处是什么
什么是载脂蛋白E
载脂蛋白E偏高有什么危害?
学习框架:系统化思维助力高效学习
恋人说分手该如何理性应对
供应链管理在企业可持续发展中的实践
践行企业社会责任 比亚迪又捐赠30亿
狙击团队如何胜利
天然气成分解析:揭示能源之源的奥秘
如何获取HTML跳转后的链接