栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

乐观锁与悲观锁

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

乐观锁与悲观锁

乐观锁:

也就是不加锁

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

悲观锁:

加锁解决问题

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

一个小例子

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

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/727533.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号