乐观锁与悲观锁的区别?
创作时间:
作者:
@小白创作中心
乐观锁与悲观锁的区别?
引用
CSDN
1.
https://blog.csdn.net/weixin_53391173/article/details/139212082
首先来看乐观锁。顾名思义,乐观锁就是持比较乐观态度的锁。乐观锁在操作数据时非常乐观,认为别的线程不会同时修改数据,所以不会上锁,但是在更新的时候会判断在此期间别的线程有没有更新过这个数据。
反之,悲观锁就是持悲观态度的锁。悲观锁在操作数据时比较悲观,每次操作数据的时候都认为别的线程也会同时修改数据,所以每次操作数据的时候都会上锁,这样别的线程想拿到这个数据就会阻塞,直到它拿到锁。举个例子,有时候我们上公共厕所的时候要排队,如下图所示。
如果你蹲马桶的时候开着门,外面有人就会排着队看着你。你会这么做吗?当然,如果在自己家里,有可能会这么干,这就是乐观锁。虽然能进到房间,但是有人占着坑位,该排队还是得排队。比如数据库提供的 write_condition 机制,以及JavaAPI并发工具包下面的原子变量类,就是使用了乐观锁的CAS 来实现的。
悲观锁就不同了,就相当于进房间之后,第一件事就是把门锁上,在门外排队等候的人不知道里面发生了什么,又着急但是又只能干等着。比如行锁、表锁、读锁、写锁,都是在操作之前先上锁,JavaAPI中的synchronized 和ReentrantLock 等独占锁都是悲观锁的实现。
根据前面对两种锁的介绍,总结一下两种锁的应用场景。
首先来看乐观锁,它适用于写少读多的情况,也就是说减少操作冲突,这样可以省去锁竞争的开销,提高系统的吞吐量。而悲观锁呢,它适用于写多读少的情况。因为,如果还使用观锁,会经常出现操作冲突,这样会导致应用层不断地重试,反而会降低系统的性能。
热门推荐
304不锈钢保温杯:护胃神器还是健康隐患?
钱小豪再现陈真徒弟经典瞬间,网友热议其近况
小红书引入大模型技术,NoteLLM方案破解推荐难题
王世贞与张居正:明代官场的风云对决
台北故宫博物院王世贞特展:书画鉴赏之旅
春节档影片如何赢得观众心?
活动品宣如何提升活动影响力和知名度?
果农教你挑草莓,冬天也能吃到甜爆浆
草莓选购与清洗秘籍:教你挑到放心草莓
聊城市监局发布草莓选购指南,教你安心享用美味
2024新规:空置房物业费减免攻略
50年代石油发现让冷湖从荒漠小镇变身石油重镇
双11种草指南:小红书算法推荐系统运作揭秘
谁才是最经典的陈真?
李小龙、李连杰、甄子丹:谁是最佳陈真?
小红书双十一成绩单:破千万商家数增3.3倍,种草文化显威力
从装备到体验:小红书构建完整露营种草生态
真诚与谎言的较量:如何在商业与生活中辨别真假
每天4次谎言,你的爱情需要这份真诚指南
洛杉矶大火背后的特殊气象条件揭秘
个人卫生与环境清洁并重:养成良好卫生习惯指南
七招提升个人卫生,三步打造洁净家居
古代各种“路”的说法!
Excel合并单元格操作详解与应用技巧
秋日围炉煮茶何处寻?扬州东关街6处茶空间推荐
Excel合并单元格技巧:提升表格美观与工作效率
学茶艺不只是泡茶:提升礼仪、职场技能与个人修养
明末清初青花钵式炉鉴别:釉色、器型、纹饰三大要点
征信新规实施,信用卡审核标准全面升级!
信用卡逾期,职场发展亮红灯?