乐观锁与悲观锁的区别?
创作时间:
作者:
@小白创作中心
乐观锁与悲观锁的区别?
引用
CSDN
1.
https://blog.csdn.net/weixin_53391173/article/details/139212082
首先来看乐观锁。顾名思义,乐观锁就是持比较乐观态度的锁。乐观锁在操作数据时非常乐观,认为别的线程不会同时修改数据,所以不会上锁,但是在更新的时候会判断在此期间别的线程有没有更新过这个数据。
反之,悲观锁就是持悲观态度的锁。悲观锁在操作数据时比较悲观,每次操作数据的时候都认为别的线程也会同时修改数据,所以每次操作数据的时候都会上锁,这样别的线程想拿到这个数据就会阻塞,直到它拿到锁。举个例子,有时候我们上公共厕所的时候要排队,如下图所示。
如果你蹲马桶的时候开着门,外面有人就会排着队看着你。你会这么做吗?当然,如果在自己家里,有可能会这么干,这就是乐观锁。虽然能进到房间,但是有人占着坑位,该排队还是得排队。比如数据库提供的 write_condition 机制,以及JavaAPI并发工具包下面的原子变量类,就是使用了乐观锁的CAS 来实现的。
悲观锁就不同了,就相当于进房间之后,第一件事就是把门锁上,在门外排队等候的人不知道里面发生了什么,又着急但是又只能干等着。比如行锁、表锁、读锁、写锁,都是在操作之前先上锁,JavaAPI中的synchronized 和ReentrantLock 等独占锁都是悲观锁的实现。
根据前面对两种锁的介绍,总结一下两种锁的应用场景。
首先来看乐观锁,它适用于写少读多的情况,也就是说减少操作冲突,这样可以省去锁竞争的开销,提高系统的吞吐量。而悲观锁呢,它适用于写多读少的情况。因为,如果还使用观锁,会经常出现操作冲突,这样会导致应用层不断地重试,反而会降低系统的性能。
热门推荐
百老汇的女主角们:当前百老汇剧目中女性角色分析
百老汇的女主角们:当前百老汇剧目中女性角色分析
张三丰:传说中的道教高人与武术宗师
竹笋炒肉的言外之意是什么?解读竹笋炒肉背后的含义
为什么那么多人买二手苹果手机?
消防设施傻傻分不清楚?一文读懂水泵接合器与消火栓的区别
这些“毒塑料”赶紧丢掉,欧盟正式通过食品接触材料的双酚A禁令
阻断乙肝病毒母婴传播,保障宝宝健康未来
微信换机怎么转移数据到新手机?3招,新手机导入旧手机数据
结对编程中如何处理角色转换的问题
致自习室里认真的你:高效学习,你需要知道的3个步骤
癌症手术切除干净还会复发吗
冰箱除味剂的使用与副作用分析(冰箱除味剂的成分及常见副作用解析)
顶层房子的优缺点及购买注意事项
陈撄宁:近现代道教发展的引领者
笔记本电脑进水维修指南:从应急处理到专业维修的完整流程
浅烘SOE咖啡豆的萃取指南:从基础到进阶的完整攻略
重大突破!新型化疗方案或成复发性鼻咽癌治疗新选择
顶级大佬的AI课程!吴恩达、李飞飞等大咖深度学习课程汇总
我国内地航司有多少飞机?哪种机型最多?
酸枣仁汤的功效与作用机制
AI论文导读 - CLASI: 通过LLM智能体实现人类水平的端到端同声传译
血栓前兆有10个表现
四季养生怎样调理五脏
帕斯卡裂桶实验报告
十二指肠淤滞症形成的主要原因有哪些
哪家快递公司寄件便宜划算?一篇文章教你如何比价,如何省钱
左转道直行了会扣分吗
家用消毒柜实用吗,家用消毒柜多大合适,家用消毒柜怎么使用
四氧化二氮的物理特性与制备方法