乐观锁与悲观锁

乐观锁:

也就是不加锁

顾名思义,他很乐观,总是假设最好情况。所以总是觉得别人拿的时候不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据

悲观锁:

加锁解决问题

和乐观锁相反,他总是假设最坏情况。每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。常见的类锁,行锁,静态锁都属于他。

一个小例子

如图,现在有两个相同的线程在执行value++, 并对应存到内存

乐观锁,可以在内存的value中加个版本号,比如第一次a线程value=7存入内存,版本号变成1,第二次存入value=21,版本号变成2,这时候线程value要存入内存时,发现自身版本号与内存版本号没对上,于是不修改内存的value,继续执行++操作。

悲观锁,就是在a线程进行++操作时,直接锁住,此时线程b无法执行,阻塞在阻塞队列中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值