乐观锁与悲观锁的区别?
创作时间:
作者:
@小白创作中心
乐观锁与悲观锁的区别?
引用
CSDN
1.
https://blog.csdn.net/weixin_53391173/article/details/139212082
首先来看乐观锁。顾名思义,乐观锁就是持比较乐观态度的锁。乐观锁在操作数据时非常乐观,认为别的线程不会同时修改数据,所以不会上锁,但是在更新的时候会判断在此期间别的线程有没有更新过这个数据。
反之,悲观锁就是持悲观态度的锁。悲观锁在操作数据时比较悲观,每次操作数据的时候都认为别的线程也会同时修改数据,所以每次操作数据的时候都会上锁,这样别的线程想拿到这个数据就会阻塞,直到它拿到锁。举个例子,有时候我们上公共厕所的时候要排队,如下图所示。
如果你蹲马桶的时候开着门,外面有人就会排着队看着你。你会这么做吗?当然,如果在自己家里,有可能会这么干,这就是乐观锁。虽然能进到房间,但是有人占着坑位,该排队还是得排队。比如数据库提供的 write_condition 机制,以及JavaAPI并发工具包下面的原子变量类,就是使用了乐观锁的CAS 来实现的。
悲观锁就不同了,就相当于进房间之后,第一件事就是把门锁上,在门外排队等候的人不知道里面发生了什么,又着急但是又只能干等着。比如行锁、表锁、读锁、写锁,都是在操作之前先上锁,JavaAPI中的synchronized 和ReentrantLock 等独占锁都是悲观锁的实现。
根据前面对两种锁的介绍,总结一下两种锁的应用场景。
首先来看乐观锁,它适用于写少读多的情况,也就是说减少操作冲突,这样可以省去锁竞争的开销,提高系统的吞吐量。而悲观锁呢,它适用于写多读少的情况。因为,如果还使用观锁,会经常出现操作冲突,这样会导致应用层不断地重试,反而会降低系统的性能。
热门推荐
日本刺身文化源自中国,为什么我们没有传承下来呢?
三大运营商“出海中东”:掘金万亿级数字经济市场
中东和北非石油天然气行业的未来发展:机遇与挑战并存
沙特阿拉伯4000亿美元基建投资下的机电设备市场机遇与挑战
11点起床后的治愈时光:从瑜伽到园艺
吃苹果猕猴桃喝酸奶,轻松提升肠胃动力!
12款营养早餐饼,拯救你的懒床时光!
双十一后如何高效规划你的工作?
11点起床后,如何快速满血复活?
肺癌患者术后,这些汤品不能错过
房贷还款方式选择要根据个人财务状况和还款能力来决定
陆军军医大学最新发现:褪黑素通过调控大脑“开关”助你睡得更好
景迈山普洱茶:千年古茶园里的“香妃”
景迈山:冬日探秘千年古茶园
炒猪肝滑嫩不老有诀窍,只需掌握这3步,在家也能做出饭店的味道
黄山赏花攻略:五月杜鹃花开,邂逅最美黄山
五一假期打卡雨花区文艺地标
五一避人潮:湖北恩施小众游推荐
经常躺着玩手机,用不了多久,可能就会“落下”6个毛病
夏天无注射液:夏季止痛新宠?
夏日养生:夏天无的局限性与更优选择
英国小学的分级阅读教学系统牛津阅读树!牛津树详细介绍。
肺癌术后有时候气急胸闷正常吗?如何缓解?
肺结节手术后怎样恢复肺功能
老人术后呼吸困难,康复治疗助其改善心肺功能
有机硅树脂储存时要注意什么,看完你就知道了
心理韧性训练:提升士兵工作效率的关键
现代军队如何平衡士兵工作与休息?
一盏心灯照十方:从难陀供灯到现代人的智慧修行
元宵节佛前供灯:点亮智慧之光