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

举报
知识浅谈 发表于 2022/08/30 09:16:05 2022/08/30
【摘要】 锁住它,快告诉我乐观锁与悲观锁的区别?

在这里插入图片描述

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

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

正菜来了⛳⛳⛳

🎈乐观锁

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

🎈悲观锁

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

🍚总结

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

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。