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

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

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

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

💒 公众号:知识浅谈

🔥 联系方式vx:zsqtcc

乐观锁与悲观锁的区别?

🤞这次都给他拿下🤞

正菜来了⛳⛳⛳

🎈乐观锁

何为乐观锁:在获取资源的时候,认为资源不会被其他线程争抢,所以就不会真正的加锁。

常用的有两种解决方案:

一种是CAS的使用:因为某个线程在对资源进行操作的时候,通过不断循环的方式对资源进行修改,如果没有被其他线程占用,则就修改成功,如果有其他线程争抢,修改失败后继续循环修改,知道修改成功。

另一种是使用版本锁stampedLock,在获取资源的时候不是真正的加锁,而是当前修改的时候,记录一个版本号,如果修改的时候版本号没有变化,说明没有其他线程争抢,如果版本号发生变化,表明其他线程争抢,则就需要再次记录版本号后再次尝试修改。

🎈悲观锁

那悲观锁又是?,在获取资源的时候,认为资源会被其他线程争抢,所以在获取资源对资源修改的时候,会先加上锁,再进行操作。

常见的锁有

sychronized:属于JVM的,是一个关键字,基于monitor的,是非公平锁,加锁的时候包含一个锁升级的过程,从无锁->偏向锁->轻量级锁->重量级锁,具体的可以查看我的其他文章,这里就不展开了。

ReentryLock:属于API的,既可以实现公平锁,也可以是公平锁,基于AQS的,阻塞状态可中断,需要手动加锁和释放锁。

🍚总结

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

相关文章
|
7月前
|
SQL 数据处理 数据库
乐观锁和悲观锁
乐观锁和悲观锁
72 0
|
7月前
乐观锁、悲观锁、互斥锁、读写锁
乐观锁、悲观锁、互斥锁、读写锁
61 3
|
3月前
|
SQL XML Java
乐观锁与悲观锁是什么?
本文详细分析了悲观锁和乐观锁的原理、区别、实现方式及应用场景。悲观锁假设冲突频繁,通过加锁保护数据一致性,适用于高并发冲突场景;乐观锁假设冲突较少,通过版本号或时间戳检测冲突,适用于读多写少场景。文章通过具体示例展示了两种锁机制的实现过程,并总结了其优缺点和适用场景,帮助读者根据实际需求选择合适的并发控制机制。
257 4
|
4月前
|
数据库 索引 关系型数据库
乐观锁和悲观锁+行锁和表锁
【8月更文挑战第2天】
61 8
|
Java API 数据库
什么是乐观锁,什么是悲观锁?
在互联网公司面试中,很多小伙伴都被问到关于锁的理解。今天,我给小伙伴们来聊一聊我对锁的理解,不管我们互斥锁、自旋锁、重入锁、读写锁、行锁、表锁等等等等这些概念,我把他们都归纳为两种类型,乐观锁和悲观锁。
129 0
|
7月前
|
安全 Java 关系型数据库
乐观锁与悲观锁
【4月更文挑战第11天】乐观锁与悲观锁
52 3
|
7月前
|
关系型数据库 MySQL 数据处理
一文彻底理解乐观锁与悲观锁
一文彻底理解乐观锁与悲观锁
856 0
|
7月前
|
安全 关系型数据库 MySQL
悲观锁和乐观锁
悲观锁和乐观锁
|
NoSQL 算法 Java
乐观锁与悲观锁的实现
本文力求来通俗地讲讲编程中的乐观锁和悲观锁,以及分别是怎么实现的。
103 0
乐观锁与悲观锁的实现
|
算法
悲观锁和乐观锁的区别
悲观锁和乐观锁的区别
233 0

热门文章

最新文章