乐观锁和悲观锁的理解

乐观锁和悲观锁是行业内给他定义的,不是实际存在的;实质是java按照是否对资源进行加锁分为乐观锁和悲观锁

悲观锁:就是一种悲观思想,总认为最坏的情况发生,认为数据很可能会被其他人修改,所以悲观锁在持有数据的时候总会吧资源或者数据锁住,这样其他线程想请求这个资源时就会堵塞,直到等到悲观锁把资源释放为止;传统的关系型数据库很多就运用到了这种锁的机制,比如行锁,表锁,读锁,写锁等,都是在做操作之前先上锁。悲观锁往往依靠数据库本身的锁就能实现

乐观锁:与悲观锁相反,他总认为资源和数据不会被他人修改,所以读取不会上锁,但是乐观锁在进行写入操作的时候会判断当前数据是否被修改过。乐观锁实现方案:版本号机制和CAS。

版本号机制:就是说在数据表中加上version字段来实现的,表述数据被修改的次数,党执行写操作后,并成功接入,version=version+1。

          CAS:Comepare and swap(交换与比较),是一种有名的无锁算法。即不使用锁的情况下实现多线程之间的变量同步。

posted @   同城少年  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示