美文网首页
乐观锁和悲观锁区别

乐观锁和悲观锁区别

作者: CHMAX | 来源:发表于2020-07-20 10:48 被阅读0次

乐观锁(Optimistic Lock)

顾名思义,就是很乐观,当去更新共享数据时,是假定数据没有被别人修改,也就不需要加锁,并且会在更新的时候判断数据是否被修改,如果被修改的话,说明存在冲突,需要重头开始重试,直到成功为止。

Java 中可以使用 volatile+CAS 原语实现,带参数的版本可以避免 ABA问题。

悲观锁(Pessimistic Lock)

顾名思义,就是很悲观,每次去更新共享数据时,都认为数据已经被别人修改,所以在每次在执行之前,都会对需要的数据进行加锁,这样别人需要更新数据时就必须进行等待。

Java 中可以使用 synchronized 及各类 Lock 锁实现。

总结

乐观锁适合用于读多写少这种竞争小的场景,避免了加锁带来的额外开销,如果外部环境竞争激烈,那么大量的线程都会处于重试状态,这反倒会导致系统性能的降低,这时候就需要考虑使用悲观锁了。

相关文章

  • 蚂蚁面试

    1、mysql乐观锁和悲观锁的区别? 乐观锁通过MVCC,版本实现,悲观锁select... for update...

  • Mysql锁

    按照使用方式,锁分为: 悲观锁 乐观锁 乐观锁 概念就不细讲了,乐观锁和悲观锁的区别是乐观锁是假设在修改数据之前,...

  • java中的乐观锁和悲观锁的区别?

    java中的乐观锁和悲观锁的区别?

  • 看完你就知道的乐观锁和悲观锁

    看完你就知道的乐观锁和悲观锁 Java 锁之乐观锁和悲观锁 [TOC] Java 按照锁的实现分为乐观锁和悲观锁,...

  • 乐观锁和悲观锁

    参考来源 深入理解乐观锁与悲观锁 乐观锁的一种实现方式——CAS mysql乐观锁总结和实践 乐观锁和悲观锁 悲观...

  • 锁的概述

    乐观锁与悲观锁 悲观锁 乐观锁和悲观锁的概念出自数据库,但在java并发包中也引入和类似的概念(乐观锁/悲观锁是一...

  • 乐观锁和悲观锁

    目录 乐观锁和悲观锁是什么/可以被用在什么样的场景下? 乐观锁和悲观锁的区别? 引用一段比较经典的描述 “数据库...

  • 并发参数

    悲观锁与乐观锁 悲观锁 synchronized和ReentrantLock等独占锁就是悲观锁思想的实现乐观锁一般...

  • 乐观锁和悲观锁区别

    乐观锁(Optimistic Lock) 顾名思义,就是很乐观,当去更新共享数据时,是假定数据没有被别人修改,也就...

  • CAS 与原子操作

    乐观锁与悲观锁 锁可以从不同的角度分类。其中,乐观锁和悲观锁是一种分类方式。 乐观锁:乐观锁又称为“无锁”。乐观锁...

网友评论

      本文标题:乐观锁和悲观锁区别

      本文链接:https://www.haomeiwen.com/subject/dzlekktx.html