乐观锁与悲观锁的区别?
创作时间:
作者:
@小白创作中心
乐观锁与悲观锁的区别?
引用
CSDN
1.
https://blog.csdn.net/weixin_53391173/article/details/139212082
首先来看乐观锁。顾名思义,乐观锁就是持比较乐观态度的锁。乐观锁在操作数据时非常乐观,认为别的线程不会同时修改数据,所以不会上锁,但是在更新的时候会判断在此期间别的线程有没有更新过这个数据。
反之,悲观锁就是持悲观态度的锁。悲观锁在操作数据时比较悲观,每次操作数据的时候都认为别的线程也会同时修改数据,所以每次操作数据的时候都会上锁,这样别的线程想拿到这个数据就会阻塞,直到它拿到锁。举个例子,有时候我们上公共厕所的时候要排队,如下图所示。
如果你蹲马桶的时候开着门,外面有人就会排着队看着你。你会这么做吗?当然,如果在自己家里,有可能会这么干,这就是乐观锁。虽然能进到房间,但是有人占着坑位,该排队还是得排队。比如数据库提供的 write_condition 机制,以及JavaAPI并发工具包下面的原子变量类,就是使用了乐观锁的CAS 来实现的。
悲观锁就不同了,就相当于进房间之后,第一件事就是把门锁上,在门外排队等候的人不知道里面发生了什么,又着急但是又只能干等着。比如行锁、表锁、读锁、写锁,都是在操作之前先上锁,JavaAPI中的synchronized 和ReentrantLock 等独占锁都是悲观锁的实现。
根据前面对两种锁的介绍,总结一下两种锁的应用场景。
首先来看乐观锁,它适用于写少读多的情况,也就是说减少操作冲突,这样可以省去锁竞争的开销,提高系统的吞吐量。而悲观锁呢,它适用于写多读少的情况。因为,如果还使用观锁,会经常出现操作冲突,这样会导致应用层不断地重试,反而会降低系统的性能。
热门推荐
春耕生产农机检修保养技术指引——拖拉机的检查与保养
2024寒食节是阴历哪一天
寒食节是哪一天
左眼皮一直跳什么预兆
全面解析模糊控制理论及其应用前景
百合花在不同文化中的象征意义是什么?百合的象征意义有哪些不同解释?
Excel中选中并复制部分内容的8种方法
交通事故报警救助程序的法律规范与实务操作
赠与协议的法律效力及撰写要点
赠与需要明示吗?一文详解赠与行为的法律要点
平仓是什么意思?一文带你全面了解平仓的定义与操作
新生儿评分Apgar标准表
8条实用技巧,教你选购完美沙发避雷指南
为什么喜欢朱自清的《春》?——多维视角下的文学审美解读
【安全提示】施工建筑坍塌事故频发,这些须知——
如何根据市场行情进行季线的合理设置?这种设置方法的实际应用效果怎样?
产品定位策划的关键策略与实用技巧解析
心理治疗师考试:探讨心理治疗师的专业素养与能力要求
大连青岛哪个城市好玩
探秘人造鸡蛋:从原料到辨别,一文读懂
拥有"恋爱脑"的女性:成因分析与改善建议
可转债发行流程及风险详解
聚宝盆的摆放风水禁忌与适宜位置
图片居中示例
劳动仲裁与起诉哪个更快:法律效率的选择与分析
详解!CCD图像传感器和CMOS图像传感器,区别在哪?
夏季适合吃什么蔬菜和水果
如何正确使用测速仪进行车速监测?这种监测方法有哪些局限性?
不同类型实验室的具体照度要求
电脑显示器故障诊断与修理指南