乐观锁与悲观锁的区别?
创作时间:
作者:
@小白创作中心
乐观锁与悲观锁的区别?
引用
CSDN
1.
https://blog.csdn.net/weixin_53391173/article/details/139212082
首先来看乐观锁。顾名思义,乐观锁就是持比较乐观态度的锁。乐观锁在操作数据时非常乐观,认为别的线程不会同时修改数据,所以不会上锁,但是在更新的时候会判断在此期间别的线程有没有更新过这个数据。
反之,悲观锁就是持悲观态度的锁。悲观锁在操作数据时比较悲观,每次操作数据的时候都认为别的线程也会同时修改数据,所以每次操作数据的时候都会上锁,这样别的线程想拿到这个数据就会阻塞,直到它拿到锁。举个例子,有时候我们上公共厕所的时候要排队,如下图所示。
如果你蹲马桶的时候开着门,外面有人就会排着队看着你。你会这么做吗?当然,如果在自己家里,有可能会这么干,这就是乐观锁。虽然能进到房间,但是有人占着坑位,该排队还是得排队。比如数据库提供的 write_condition 机制,以及JavaAPI并发工具包下面的原子变量类,就是使用了乐观锁的CAS 来实现的。
悲观锁就不同了,就相当于进房间之后,第一件事就是把门锁上,在门外排队等候的人不知道里面发生了什么,又着急但是又只能干等着。比如行锁、表锁、读锁、写锁,都是在操作之前先上锁,JavaAPI中的synchronized 和ReentrantLock 等独占锁都是悲观锁的实现。
根据前面对两种锁的介绍,总结一下两种锁的应用场景。
首先来看乐观锁,它适用于写少读多的情况,也就是说减少操作冲突,这样可以省去锁竞争的开销,提高系统的吞吐量。而悲观锁呢,它适用于写多读少的情况。因为,如果还使用观锁,会经常出现操作冲突,这样会导致应用层不断地重试,反而会降低系统的性能。
热门推荐
陕西“非遗人”巧手创作春节主题作品
南方丝绸之路重镇:上里古镇的文化传承
炒菜时“4个”调料放错顺序,菜品味道大打折扣!
选蟹有讲究,蒸制有技巧:做出完美清蒸螃蟹的秘诀
李清照领衔:四位宋代女词人的文学传奇
厚耳垂与长寿之谜:从古代面相学到现代医学的解读
职场催款秘籍:如何优雅地提醒同事还钱?
春节回家,软座 vs 硬卧怎么选?
徽州古城摄影攻略:捕捉皖南最美古村的绝美瞬间
冬季打卡老龙头,探寻长城之美
景龙门:见证北宋东京繁华的千年古门
养生之道:如何通过饮食有效改善血糖水平
徽州古城:千年文化传承的秘密
柠檬入榜!营养师揭秘6种高效减肥食物
麦肯锡2024年技术趋势展望:15大科技趋势塑造未来商业格局
卫星电视接收设备迎来低功耗时代,功耗降低30%成新趋势
提前规划、比价选购:一文掌握低价机票购买技巧
节后机票价格跳水:14元飞青岛,31元飞重庆
厦门到永安:山水石林溶洞精华一日游
古代宫女饮食禁忌:异味食物禁食,用餐时间地点受限
正念疗法:缓解焦虑抑郁、改善睡眠的实用心理疗法
高考英语改革下的动词过去式备考攻略
降血糖食物有哪些?十大降血糖食物表!可快速降血糖 附早餐搭配与健康菜单
北方樱桃种植全攻略:品种选择与栽培技术要点
圣诞季送礼指南:不同颜色满天星的花语
ABS材料耐热一般是多少度?
冠心病患者如何延长心脏支架寿命?
挑选好鱼是关键,教你做出完美剁椒鱼头
尿酸值忽高忽低致疼痛,怎么办?痛风专家周桂兰为你解答!
莫西沙星拜复乐,这些人群千万别碰!