乐观锁与悲观锁的区别?
创作时间:
作者:
@小白创作中心
乐观锁与悲观锁的区别?
引用
CSDN
1.
https://blog.csdn.net/weixin_53391173/article/details/139212082
首先来看乐观锁。顾名思义,乐观锁就是持比较乐观态度的锁。乐观锁在操作数据时非常乐观,认为别的线程不会同时修改数据,所以不会上锁,但是在更新的时候会判断在此期间别的线程有没有更新过这个数据。
反之,悲观锁就是持悲观态度的锁。悲观锁在操作数据时比较悲观,每次操作数据的时候都认为别的线程也会同时修改数据,所以每次操作数据的时候都会上锁,这样别的线程想拿到这个数据就会阻塞,直到它拿到锁。举个例子,有时候我们上公共厕所的时候要排队,如下图所示。
如果你蹲马桶的时候开着门,外面有人就会排着队看着你。你会这么做吗?当然,如果在自己家里,有可能会这么干,这就是乐观锁。虽然能进到房间,但是有人占着坑位,该排队还是得排队。比如数据库提供的 write_condition 机制,以及JavaAPI并发工具包下面的原子变量类,就是使用了乐观锁的CAS 来实现的。
悲观锁就不同了,就相当于进房间之后,第一件事就是把门锁上,在门外排队等候的人不知道里面发生了什么,又着急但是又只能干等着。比如行锁、表锁、读锁、写锁,都是在操作之前先上锁,JavaAPI中的synchronized 和ReentrantLock 等独占锁都是悲观锁的实现。
根据前面对两种锁的介绍,总结一下两种锁的应用场景。
首先来看乐观锁,它适用于写少读多的情况,也就是说减少操作冲突,这样可以省去锁竞争的开销,提高系统的吞吐量。而悲观锁呢,它适用于写多读少的情况。因为,如果还使用观锁,会经常出现操作冲突,这样会导致应用层不断地重试,反而会降低系统的性能。
热门推荐
生物特征识别的六大技术研究
什么是加密市场情绪?如何衡量和分析加密市场情绪
室内没有阳光,养这8大类植物总不会错,平价好看植物推荐
车贷合同签订后的法律事务处理与风险防范
锁与钥匙的启示:看待事物的双重标准
C919订单破1400架,两年仅交付16架,产能提升究竟难在哪?
4部适合开学前观看的纪录片,轻松唤起孩子的学习动力
李楚人,用古典音乐诠释女性力量的钢琴家
厕所发展史:从古埃及到智能马桶的演变
低筋面粉是什么面粉?低筋面粉的种类及用途
张雪峰谈国家专项计划的好处与坏处(含报考条件)
周五006 法甲 图卢兹VS摩纳哥
阿比多尔:新冠诊疗方案中的“新秀”药物
均田制:中国古代的土地分配制度
眼睛突然看不见是什么原因
大气压的发现
数学符号”d”的含义及应用详解
探访大圩古镇,领略明清建筑风采,品味桂林文化底蕴!
社保扣款协议签订指南:灵活就业及城乡居民个人委托扣款协议签订与撤销
HTML中图片注释的多种实现方式
如何根据外国人名大全选择适合的名字?
三文鱼鳄梨加州卷
四川三州地区的发展现状与未来规划
葬礼“瓦罐坟”的习俗是怎么样的?哪些地方有这个习俗?
使用信号量解决生产者与消费者问题
股票异动公告后走势会如何
描写儿童生活的古诗(精选25首)
如何追求一个很少发朋友圈的女生
贷款利率入门:厘、分、毛的概念及换算技巧!
一顿烧烤的热量真相:从食材到烤制方式的全面解析