写点什么

锁住它,快告诉我乐观锁与悲观锁的区别?

作者:知识浅谈
  • 2022 年 8 月 30 日
    吉林
  • 本文字数:603 字

    阅读完需:约 2 分钟

锁住它,快告诉我乐观锁与悲观锁的区别?

🍁 作者:知识浅谈,InfoQ 签约博主,CSDN 博客专家,阿里云签约博主,华为云云享专家

📌 擅长领域:全栈工程师、爬虫、ACM 算法

💒 公众号:知识浅谈

🔥 联系方式 vx:zsqtcc


乐观锁与悲观锁的区别?🤞这次都给他拿下🤞


正菜来了⛳⛳⛳

🎈乐观锁

何为乐观锁:在获取资源的时候,认为资源不会被其他线程争抢,所以就不会真正的加锁。常用的有两种解决方案:一种是 CAS 的使用:因为某个线程在对资源进行操作的时候,通过不断循环的方式对资源进行修改,如果没有被其他线程占用,则就修改成功,如果有其他线程争抢,修改失败后继续循环修改,知道修改成功。另一种是使用版本锁 stampedLock,在获取资源的时候不是真正的加锁,而是当前修改的时候,记录一个版本号,如果修改的时候版本号没有变化,说明没有其他线程争抢,如果版本号发生变化,表明其他线程争抢,则就需要再次记录版本号后再次尝试修改。

🎈悲观锁

那悲观锁又是?,在获取资源的时候,认为资源会被其他线程争抢,所以在获取资源对资源修改的时候,会先加上锁,再进行操作。常见的锁有 sychronized:属于 JVM 的,是一个关键字,基于 monitor 的,是非公平锁,加锁的时候包含一个锁升级的过程,从无锁->偏向锁->轻量级锁->重量级锁,具体的可以查看我的其他文章,这里就不展开了。ReentryLock:属于 API 的,既可以实现公平锁,也可以是公平锁,基于 AQS 的,阻塞状态可中断,需要手动加锁和释放锁。

🍚总结

以上就是关于乐观锁和悲观锁的简单总结,希望有所帮助。

发布于: 19 小时前阅读数: 14
用户头像

知识浅谈

关注

公众号:知识浅谈 2022.06.22 加入

🍁 作者:知识浅谈,InfoQ签约作者,CSDN博客专家/签约讲师,华为云云享专家,阿里云签约博主 📌 擅长领域:全栈工程师、爬虫、ACM算法 💒 公众号:知识浅谈 🔥 联系方式vx:zsqtcc

评论

发布
暂无评论
锁住它,快告诉我乐观锁与悲观锁的区别?_8月月更_知识浅谈_InfoQ写作社区