乐观锁与悲观锁的区别?
创作时间:
作者:
@小白创作中心
乐观锁与悲观锁的区别?
引用
CSDN
1.
https://blog.csdn.net/weixin_53391173/article/details/139212082
首先来看乐观锁。顾名思义,乐观锁就是持比较乐观态度的锁。乐观锁在操作数据时非常乐观,认为别的线程不会同时修改数据,所以不会上锁,但是在更新的时候会判断在此期间别的线程有没有更新过这个数据。
反之,悲观锁就是持悲观态度的锁。悲观锁在操作数据时比较悲观,每次操作数据的时候都认为别的线程也会同时修改数据,所以每次操作数据的时候都会上锁,这样别的线程想拿到这个数据就会阻塞,直到它拿到锁。举个例子,有时候我们上公共厕所的时候要排队,如下图所示。
如果你蹲马桶的时候开着门,外面有人就会排着队看着你。你会这么做吗?当然,如果在自己家里,有可能会这么干,这就是乐观锁。虽然能进到房间,但是有人占着坑位,该排队还是得排队。比如数据库提供的 write_condition 机制,以及JavaAPI并发工具包下面的原子变量类,就是使用了乐观锁的CAS 来实现的。
悲观锁就不同了,就相当于进房间之后,第一件事就是把门锁上,在门外排队等候的人不知道里面发生了什么,又着急但是又只能干等着。比如行锁、表锁、读锁、写锁,都是在操作之前先上锁,JavaAPI中的synchronized 和ReentrantLock 等独占锁都是悲观锁的实现。
根据前面对两种锁的介绍,总结一下两种锁的应用场景。
首先来看乐观锁,它适用于写少读多的情况,也就是说减少操作冲突,这样可以省去锁竞争的开销,提高系统的吞吐量。而悲观锁呢,它适用于写多读少的情况。因为,如果还使用观锁,会经常出现操作冲突,这样会导致应用层不断地重试,反而会降低系统的性能。
热门推荐
荔枝三百颗:自然馈赠与诗意人生的交织
身体脓肿是怎么引起的原因有哪些
中国象棋棋盘尺寸与棋子比例
四大中锋穿越到现在,是无敌的存在吗?谁能混得最好?
以工程技術探索老祖宗的智慧 發現中醫拔罐療法的奧秘
在合同中加入不可抗力条款应注意哪些事项?
实战化徒步行军砺精兵
海南岛内三大机场已开通66条国际及地区客运航线
手球比赛规则(图文)
华为据报明年一季度量产其最新AI晶片昇腾910C
為什麼摩羯男總是沒有安全感?揭開他們內心深處的秘密
储能系统的分类及应用
Win11系统查看电脑型号的详细指南
心境障碍的心理治疗:认知行为疗法、人际心理治疗和正念疗法
环境工程专业的未来:ESG与就业前景解析
提高合同管理水平
2024华南理工大学研究生初试复试所占比例
光的魔术show:解密神奇的全反射现象及其应用
正方体展开图课件知识讲稿
文竹盆栽的养殖方法和注意事项有哪些?
四种Wi-Fi安全协议:WEP、WPA、WPA2、WPA3,看完秒懂!
铂族金属研究:稀缺珍贵的战略性资源
“猪大肠”都有几种做法?怎样做好吃呀?看后你一定会收藏!
四种常用碳青霉烯类抗菌药物的对比
羚羊角粉的功效与作用有哪些
高速汇入主路的正确流程和 6 个安全禁忌,新手司机必知!
华山登山路线图详解及实用攻略
常吃红薯的正确方法
深入了解反向视频搜索:寻找视频来源并解决版权问题
硬核科普·袜子选购与避坑指南