乐观锁与悲观锁的区别?
创作时间:
作者:
@小白创作中心
乐观锁与悲观锁的区别?
引用
CSDN
1.
https://blog.csdn.net/weixin_53391173/article/details/139212082
首先来看乐观锁。顾名思义,乐观锁就是持比较乐观态度的锁。乐观锁在操作数据时非常乐观,认为别的线程不会同时修改数据,所以不会上锁,但是在更新的时候会判断在此期间别的线程有没有更新过这个数据。
反之,悲观锁就是持悲观态度的锁。悲观锁在操作数据时比较悲观,每次操作数据的时候都认为别的线程也会同时修改数据,所以每次操作数据的时候都会上锁,这样别的线程想拿到这个数据就会阻塞,直到它拿到锁。举个例子,有时候我们上公共厕所的时候要排队,如下图所示。
如果你蹲马桶的时候开着门,外面有人就会排着队看着你。你会这么做吗?当然,如果在自己家里,有可能会这么干,这就是乐观锁。虽然能进到房间,但是有人占着坑位,该排队还是得排队。比如数据库提供的 write_condition 机制,以及JavaAPI并发工具包下面的原子变量类,就是使用了乐观锁的CAS 来实现的。
悲观锁就不同了,就相当于进房间之后,第一件事就是把门锁上,在门外排队等候的人不知道里面发生了什么,又着急但是又只能干等着。比如行锁、表锁、读锁、写锁,都是在操作之前先上锁,JavaAPI中的synchronized 和ReentrantLock 等独占锁都是悲观锁的实现。
根据前面对两种锁的介绍,总结一下两种锁的应用场景。
首先来看乐观锁,它适用于写少读多的情况,也就是说减少操作冲突,这样可以省去锁竞争的开销,提高系统的吞吐量。而悲观锁呢,它适用于写多读少的情况。因为,如果还使用观锁,会经常出现操作冲突,这样会导致应用层不断地重试,反而会降低系统的性能。
热门推荐
头皮银屑病用什么药比较好
类固醇的副作用和危害是什么
跨境电商合同纠纷十大类型解析
从烘焙学校毕业后的职业选择之路,探寻理想的烘焙就业方向
项目安全管理:关键策略和最佳实践
甲减和甲亢有什么区别?哪个更严重?
绿色生活:从点滴做起,拥抱可持续未来
这才是冬日长白山的正确打开方式,真正的冰雪版的桃花源记!
“一月睡,二月哭”!导致宝宝二月哭的“肠胀气”,如何应对?
你的文案标题,如何能让人一眼万年?
锂电池使用和存储电压指南
椰子冻的配方和做法
一颗小浆果,蕴藏大能量!团队深耕多年,这本书为你揭秘
美国高中开学时间有哪些影响因素和安排
医院暖通空调能耗大?可以采取这几项节能措施
2025年CPA考试报名时间及考试安排
经济数据引发美国科技股再跳水,热门中概股大幅回落
如何确保单证一致?外贸人必知的技巧
查肝胆挂什么科门诊
天籁两万公里保养攻略:机油更换与常规检查详解
轨道交通信号基础设备详解
深入解析:贸易条款区分及其实际运用
DRG/DIP更新版本背后,医保局称医保支付方式改革三年计划预计年底完成
甲醛致癌?板材E0和E1哪个好?装修板材怎么选?
法院对违约金怎么支持的
如何做好销售合规管理
黑洞并合:宇宙镜像对称性遭遇挑战?
电子医保住院怎么报销
交通事故亲属护理需要什么证明
首家外资独资券商来了,摩根大通全资控股旗下合资券商获备案