乐观锁与悲观锁的区别?
创作时间:
作者:
@小白创作中心
乐观锁与悲观锁的区别?
引用
CSDN
1.
https://blog.csdn.net/weixin_53391173/article/details/139212082
首先来看乐观锁。顾名思义,乐观锁就是持比较乐观态度的锁。乐观锁在操作数据时非常乐观,认为别的线程不会同时修改数据,所以不会上锁,但是在更新的时候会判断在此期间别的线程有没有更新过这个数据。
反之,悲观锁就是持悲观态度的锁。悲观锁在操作数据时比较悲观,每次操作数据的时候都认为别的线程也会同时修改数据,所以每次操作数据的时候都会上锁,这样别的线程想拿到这个数据就会阻塞,直到它拿到锁。举个例子,有时候我们上公共厕所的时候要排队,如下图所示。
如果你蹲马桶的时候开着门,外面有人就会排着队看着你。你会这么做吗?当然,如果在自己家里,有可能会这么干,这就是乐观锁。虽然能进到房间,但是有人占着坑位,该排队还是得排队。比如数据库提供的 write_condition 机制,以及JavaAPI并发工具包下面的原子变量类,就是使用了乐观锁的CAS 来实现的。
悲观锁就不同了,就相当于进房间之后,第一件事就是把门锁上,在门外排队等候的人不知道里面发生了什么,又着急但是又只能干等着。比如行锁、表锁、读锁、写锁,都是在操作之前先上锁,JavaAPI中的synchronized 和ReentrantLock 等独占锁都是悲观锁的实现。
根据前面对两种锁的介绍,总结一下两种锁的应用场景。
首先来看乐观锁,它适用于写少读多的情况,也就是说减少操作冲突,这样可以省去锁竞争的开销,提高系统的吞吐量。而悲观锁呢,它适用于写多读少的情况。因为,如果还使用观锁,会经常出现操作冲突,这样会导致应用层不断地重试,反而会降低系统的性能。
热门推荐
中国055型驱逐舰:弥补短板,升级海上作战实力
一个动作不能治愈鼻炎,但这些方法能缓解症状
13 招实用方法,轻松优化你的 Windows 11 游戏体验
低钾食物选择:为肌营养不良患者守护电解质平衡
术后伤口如何护理?出现红肿和瘙痒怎么办?
汽车油门怎么踩更省油,学会这几个技巧很重要
2025年在职研究生学费和全日制比有差距吗?
锥形转子电机气隙调整方法及注意事项
高钠废水处理技术详解:物理法、化学法与生物法
全球电商竞争中的制胜法宝:跨境电商的供应链管理
重庆海南文昌旅游攻略:自驾游详细路线与必备指南
了解金属拱形屋顶在高温环境下的性能调整
哪个平台可以查询社会保障卡的个人账户信息?
i5 4590相当于笔记本什么CPU?性能对比与替代型号解析
如何使用数据库查找文献:从选择数据库到文献管理的完整指南
借鉴成功人士财务管理方法,提升财富管理能力
影响狗性格的三个重要因素
酒驾风险与法律标准解析:如何确保安全驾驶与负责任的选择
海外市场的商业偏好与禁忌——俄罗斯篇
梭子蟹和飞蟹是一个品种吗
装饰设计团队如何管理
欧拉:数学与科学领域的璀璨明珠
中小客车竞价系统:运作机制与优势解析
LAPACK矩阵QR分解详解:深入理解其原理与应用
欧洲最安全的十座城市,第一你很难想到!
吕后凶狠残酷之谜:政治斗争中的女性力量与牺牲
大理旅游市场分析:游客特征、消费习惯与潜在商机
SQL复制数据库表结构的三种方法
维护自身合法权益:了解法律,实现自我保护和维权
如何增加视频的清晰度(如何增加照片清晰度)