乐观锁和悲观锁的区别(3大核心区别)

乐观锁和悲观锁的区别(3大核心区别)-mikechen

乐观锁和悲观锁是常见的并发策略,很多并不了解下面乐观锁和悲观锁的区别,下面详解乐观锁和悲观锁的区别@mikehen

乐观锁概念

乐观锁就是很乐观的意思,假设并发访问不会冲突,因此在读取数据时不会加锁,而是在更新数据时通过比较数据版本号或时间戳等乐观地认为当前数据没有被其他并发操作修改。

乐观锁的优点包括:

  1. 减少锁竞争和等待时间,提高并发性能;
  2. 不需要加锁,降低了系统开销;
  3. 适合读操作比写操作多的场景。

乐观锁的缺点包括:

  1. 需要保证数据版本号或时间戳的正确性,增加了编程复杂性;
  2. 当并发冲突较多时,会导致频繁的回滚和重试操作,降低了系统性能。

 

悲观锁概念

悲观锁总是假设最坏的情况,认为共享资源每次被访问的时候就会出现问题,所以每次在获取资源操作的时候都会上锁。

悲观锁的优点包括:

  1. 能够保证数据的一致性和完整性;
  2. 适合写操作比读操作多的场景。

悲观锁的缺点包括:

  1. 增加了锁的竞争和等待时间,降低了并发性能;
  2. 采用粗粒度锁的方式可能导致不必要的等待;
  3. 会增加系统开销。

 

乐观锁和悲观锁的区别

乐观锁和悲观锁是两种并发控制的策略,其主要区别在于对于并发访问冲突的假设和处理方式:

  1. 假设:乐观锁假设并发访问不会冲突,因此在读取数据时不会加锁,而悲观锁假设并发访问会冲突,因此在读取数据时会加锁。
  2. 处理方式:乐观锁在数据更新时检查是否有其他并发操作修改了数据,若有,则取消当前操作并回滚,重新读取数据并重试;而悲观锁在读取数据时加锁,直到当前操作完成后才释放锁。

以上就是乐观锁和悲观锁的区别详解,更多乐观锁和悲观锁请查看:乐观锁和悲观锁详解(面试必问必考)

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法