乐观锁与悲观锁的区别?
创作时间:
作者:
@小白创作中心
乐观锁与悲观锁的区别?
引用
CSDN
1.
https://blog.csdn.net/weixin_53391173/article/details/139212082
首先来看乐观锁。顾名思义,乐观锁就是持比较乐观态度的锁。乐观锁在操作数据时非常乐观,认为别的线程不会同时修改数据,所以不会上锁,但是在更新的时候会判断在此期间别的线程有没有更新过这个数据。
反之,悲观锁就是持悲观态度的锁。悲观锁在操作数据时比较悲观,每次操作数据的时候都认为别的线程也会同时修改数据,所以每次操作数据的时候都会上锁,这样别的线程想拿到这个数据就会阻塞,直到它拿到锁。举个例子,有时候我们上公共厕所的时候要排队,如下图所示。
如果你蹲马桶的时候开着门,外面有人就会排着队看着你。你会这么做吗?当然,如果在自己家里,有可能会这么干,这就是乐观锁。虽然能进到房间,但是有人占着坑位,该排队还是得排队。比如数据库提供的 write_condition 机制,以及JavaAPI并发工具包下面的原子变量类,就是使用了乐观锁的CAS 来实现的。
悲观锁就不同了,就相当于进房间之后,第一件事就是把门锁上,在门外排队等候的人不知道里面发生了什么,又着急但是又只能干等着。比如行锁、表锁、读锁、写锁,都是在操作之前先上锁,JavaAPI中的synchronized 和ReentrantLock 等独占锁都是悲观锁的实现。
根据前面对两种锁的介绍,总结一下两种锁的应用场景。
首先来看乐观锁,它适用于写少读多的情况,也就是说减少操作冲突,这样可以省去锁竞争的开销,提高系统的吞吐量。而悲观锁呢,它适用于写多读少的情况。因为,如果还使用观锁,会经常出现操作冲突,这样会导致应用层不断地重试,反而会降低系统的性能。
热门推荐
豫园股份持续出售资产“回血”,15亿交易获河南国资接盘
和毛孩來場充電之旅!寵物旅遊兩天一夜注意事項及行程懶人包
痔疮痊愈后容易复发吗?医生给出专业解答
二手房屋契税征收的标准
连接中国Z世代:不要一味科普,要基于Z世代的特征和信念开展传播
肝包虫病的检查方法详解
李清照南渡:词中才女的流离岁月
户均面积怎么算?合理评估居住需求的实用指南
如何分析量价背离现象?量价背离的成因和影响有哪些?
注册资本填写范本及注意事项
如何种植沙漠玫瑰(教你从种子到开花的全过程)
人类历史首次!帕克探测器以最近距离访问太阳!
帕克号太阳探测器刷新人类飞行器速度纪录
满二和满五的税费区别是什么
薛仁贵被流放的背后真相与重返朝堂之路
你可能小看了愤怒背后的价值
适合同事间的惩罚:劳动法框架下的纪律处分规则与实践
竟然还有“舞蹈病”?阿姨血糖失控后不停“起舞”
大学生请注意丨临近假期,这类“兼职”套路深!遇到千万要警惕!
BIPV光伏建筑一体化的含义、特点、优势及前景
周亚夫:西汉的军事奇才与耿直丞相
世界十大已灭绝国家排行榜
不吃早餐会导致胆结石,是真是假?
如何检查论文引用数据库
健身减肥饮食计划表
正交投影 (Orthographic Projection) 详解
胯骨疼自我疗法是什么
古建筑营术语名称大分析
如何在Excel中制作库存管理表:详细步骤与实用技巧
远古巨型生物有多大?最新发现告诉你