乐观锁与悲观锁的区别?
创作时间:
作者:
@小白创作中心
乐观锁与悲观锁的区别?
引用
CSDN
1.
https://blog.csdn.net/weixin_53391173/article/details/139212082
首先来看乐观锁。顾名思义,乐观锁就是持比较乐观态度的锁。乐观锁在操作数据时非常乐观,认为别的线程不会同时修改数据,所以不会上锁,但是在更新的时候会判断在此期间别的线程有没有更新过这个数据。
反之,悲观锁就是持悲观态度的锁。悲观锁在操作数据时比较悲观,每次操作数据的时候都认为别的线程也会同时修改数据,所以每次操作数据的时候都会上锁,这样别的线程想拿到这个数据就会阻塞,直到它拿到锁。举个例子,有时候我们上公共厕所的时候要排队,如下图所示。
如果你蹲马桶的时候开着门,外面有人就会排着队看着你。你会这么做吗?当然,如果在自己家里,有可能会这么干,这就是乐观锁。虽然能进到房间,但是有人占着坑位,该排队还是得排队。比如数据库提供的 write_condition 机制,以及JavaAPI并发工具包下面的原子变量类,就是使用了乐观锁的CAS 来实现的。
悲观锁就不同了,就相当于进房间之后,第一件事就是把门锁上,在门外排队等候的人不知道里面发生了什么,又着急但是又只能干等着。比如行锁、表锁、读锁、写锁,都是在操作之前先上锁,JavaAPI中的synchronized 和ReentrantLock 等独占锁都是悲观锁的实现。
根据前面对两种锁的介绍,总结一下两种锁的应用场景。
首先来看乐观锁,它适用于写少读多的情况,也就是说减少操作冲突,这样可以省去锁竞争的开销,提高系统的吞吐量。而悲观锁呢,它适用于写多读少的情况。因为,如果还使用观锁,会经常出现操作冲突,这样会导致应用层不断地重试,反而会降低系统的性能。
热门推荐
服药期间的饮食注意事项:从西药到中药的全面解析
九谷营养面:零添加更健康,老人孩子都放心吃!
语言发育迟缓怎么办?认知训练是关键
佟二堡:一座承载历史韵味的小镇
手机银行转账输错卡号怎么办?资金流向和处理全攻略
食物与情绪的奇妙关联:如何通过饮食调节心情
山东出发自驾游黄山全攻略:800公里10小时穿越鲁皖
唐代宫怨诗里的那些“白莲花”
赵丽颖《与凤行》首播登热搜,战神形象引发热议
从法律到观念:全球女性隐私权保护困境与出路
漂流、滑车、山水乐园,黄腾峡打造粤北最大生态游乐王国
龙门石窟夜游+洛邑古城:洛阳3天2晚精华行程
南昌起义部队有2万余精锐,沿途两次分兵,仅7千人到达目的地
冬游洛阳白云山:郑州出发最全攻略
揭秘中国古建筑抗震黑科技:榫卯斗拱的千年智慧
西葫芦炒蛋:简单美味中的营养密码
双十一教你如何与中年女性沟通
高通胀高利率下,年金比4%法则更适合退休规划
用“三七定律”避免家庭纷争,维护亲情和谐
高糖高脂的可乐鸡翅,这样吃更健康
雪莲花家庭种植指南:科学培育“高山之宝”
热带海岛的温泉之约:海南5大温泉景点推荐
原地超慢跑走红:安全高效,各年龄段皆宜的养生运动
Epley's法:治疗耳石症最有效的复位疗法,临床治愈率超93%
明星都在玩的海龟汤,你还不知道?
简单5步,教你做出松软开花的南瓜小米糕
专家推荐:脑梗康复锻炼法
车能进上海吗
冬日养生必备:莲藕大骨汤
缺兵少将仍大胜首钢,浙江男篮“均球权”模式显威力