用讲故事的方式理解乐观锁和悲观锁~

悲观锁假设数据经常发生冲突,在操作前先加锁。乐观锁则在操作时不加锁,而在更新时检查是否产生冲突,如CAS算法所示。两者分别适用于不同的并发场景,以保证数据的一致性。

想象一下你和你的朋友们要在一张纸上写字画画。如果你们彼此不知道对方会不会修改同一个位置的内容,为了保险起见,每次只有一个人可以写,写完后要交给下一个人。这就是悲观锁的思想,即基于悲观的认为数据可能会产生冲突,所以需要在使用数据之前先加锁,确保每个人对同一位置的内容操作完毕后才能进行下一个位置的操作。

而乐观锁则认为在大多数情况下,不会出现并发冲突,所以每个人都不加锁,直接写字画画。当一个人写完后,将自己写的内容与原来的内容做比较,如果没有被其它人修改过,就提交更新。如果发现已经被其它人修改过,就返回错误信息让该人重新编辑。例如,你写了“我喜欢吃苹果”,但发现其中的“我”已被另一个朋友改成了“他”,那么你就要重新编辑成“他喜欢吃苹果”。这个机制实际上就是基于乐观锁的CAS(Compare And Swap)算法实现的。

总结一下:悲观锁的思想是在操作前悲观地认为会出现并发冲突,所以事先加锁,保证每一个操作完成后才能进行下一个操作;而乐观锁则是乐观地认为并发冲突的概率很小,而不加锁,但在提交更新时判断是否有冲突,有则返回错误信息。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值