乐观锁和悲观锁的理解
乐观锁和悲观锁是行业内给他定义的,不是实际存在的;实质是java按照是否对资源进行加锁分为乐观锁和悲观锁;
悲观锁:就是一种悲观思想,总认为最坏的情况发生,认为数据很可能会被其他人修改,所以悲观锁在持有数据的时候总会吧资源或者数据锁住,这样其他线程想请求这个资源时就会堵塞,直到等到悲观锁把资源释放为止;传统的关系型数据库很多就运用到了这种锁的机制,比如行锁,表锁,读锁,写锁等,都是在做操作之前先上锁。悲观锁往往依靠数据库本身的锁就能实现。
乐观锁:与悲观锁相反,他总认为资源和数据不会被他人修改,所以读取不会上锁,但是乐观锁在进行写入操作的时候会判断当前数据是否被修改过。乐观锁实现方案:版本号机制和CAS。
版本号机制:就是说在数据表中加上version字段来实现的,表述数据被修改的次数,党执行写操作后,并成功接入,version=version+1。
CAS:Comepare and swap(交换与比较),是一种有名的无锁算法。即不使用锁的情况下实现多线程之间的变量同步。
作者:同城少年
-------------------------------------------
个性签名:选择比努力更重要
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现