乐观锁与悲观锁的区别?
创作时间:
作者:
@小白创作中心
乐观锁与悲观锁的区别?
引用
CSDN
1.
https://blog.csdn.net/weixin_53391173/article/details/139212082
首先来看乐观锁。顾名思义,乐观锁就是持比较乐观态度的锁。乐观锁在操作数据时非常乐观,认为别的线程不会同时修改数据,所以不会上锁,但是在更新的时候会判断在此期间别的线程有没有更新过这个数据。
反之,悲观锁就是持悲观态度的锁。悲观锁在操作数据时比较悲观,每次操作数据的时候都认为别的线程也会同时修改数据,所以每次操作数据的时候都会上锁,这样别的线程想拿到这个数据就会阻塞,直到它拿到锁。举个例子,有时候我们上公共厕所的时候要排队,如下图所示。
如果你蹲马桶的时候开着门,外面有人就会排着队看着你。你会这么做吗?当然,如果在自己家里,有可能会这么干,这就是乐观锁。虽然能进到房间,但是有人占着坑位,该排队还是得排队。比如数据库提供的 write_condition 机制,以及JavaAPI并发工具包下面的原子变量类,就是使用了乐观锁的CAS 来实现的。
悲观锁就不同了,就相当于进房间之后,第一件事就是把门锁上,在门外排队等候的人不知道里面发生了什么,又着急但是又只能干等着。比如行锁、表锁、读锁、写锁,都是在操作之前先上锁,JavaAPI中的synchronized 和ReentrantLock 等独占锁都是悲观锁的实现。
根据前面对两种锁的介绍,总结一下两种锁的应用场景。
首先来看乐观锁,它适用于写少读多的情况,也就是说减少操作冲突,这样可以省去锁竞争的开销,提高系统的吞吐量。而悲观锁呢,它适用于写多读少的情况。因为,如果还使用观锁,会经常出现操作冲突,这样会导致应用层不断地重试,反而会降低系统的性能。
热门推荐
怀孕能做哪些活动?这份孕期活动指南请收好
脖子突然疼痛的原因及解決方法全攻略!
2025年CPA考试安排出炉!考生必看资讯!
智能家居行业如何在生存恐怖游戏中增添真实感?
伪成长股的特征有哪些?如何识别伪成长股?
探索非公党建新模式,以科技创新助力人才培育
循环体能游戏:让幼儿在游戏中快乐成长
新疆喀什古城:丝路重镇焕发新颜 民族风情动人心弦
胎儿系统超声检查详解:五大检查项目及注意事项
10岁男孩反复咳嗽发烧找病因,“罪魁祸首”竟是一颗南瓜子!
苏轼生平简介:北宋中期文坛领袖
阑尾炎疼痛指数大公开:撕裂般的痛楚怎形容?
五子棋开局26种阵法分享 五子棋开局必胜阵法教程最新版
上海宝山滨江:吴淞口最美骑行岸线,尽享运动休闲时光
信息化设备助力亚冬会短道速滑精准判罚
厉害了,我的哥!株洲男子种的柚子树上嫁接出4种水果
口臭的不同味道,是你的身体有话要说
敌在葱岭以西:古代中国与其他文明的四场陆战
腓总神经损伤导致的步态异常如何治疗
安徽数交所运营 四大首创引育千亿数据产业生态
糖尿病运动指导:方式、强度、时间与注意事项全解析
《好一个乖乖女》短剧里的情感迷宫:探寻心灵的出口
紧张性头痛怎么诊断
考研的风还是吹进了演艺圈:专业精进还是“凹人设”?
想要减少咖啡因摄入?这 5 招轻松搞定
厂房改造造成坍塌怎么处理
林毅夫:中国发展新质生产力空间很大,有大量机遇和条件
商品房住不了70年塌了怎么办
深圳最新户口本丢失如何补办
分、子公司如何实现个性化业务