乐观锁和悲观锁

技术乐观锁和悲观锁 乐观锁和悲观锁悲观锁:具有强烈的独占和排他特性。它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度。因此,在整个数据处理过程中,将数据处于锁定

乐观锁和悲观锁。

悲观锁:具有很强的排他性和排他特性。是指外界对数据修改的保守态度(包括系统当前的其他事务和来自外部系统的事务)。因此,在整个数据处理过程中,数据是被锁定的。悲观锁的实现往往依赖于数据库提供的锁机制(只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则即使在这个系统中实现了锁机制,也不能保证外部系统不会修改数据)。

之所以叫悲观锁,是因为它是一种对数据修改持悲观态度的并发控制方法。总是假设最坏的情况。每次读取数据时,您默认其他线程会更改数据,因此您需要锁定它。当其他线程想要访问数据时,您需要阻塞并挂起它。悲观锁的实现:

1.传统的关系数据库使用这种锁定机制,如行锁、表锁、读锁、写锁等。所有这些都在操作前锁定。

2.同步关键字在Java中的实现。

悲观锁主要分为共享锁和排他锁:

共享锁[共享锁]也称为读锁,简称S锁。顾名思义,共享锁是指多个事务可以共享同一个数据的锁,所有事务都可以访问数据,但只能读取,不能修改。

排它锁[排它锁]也叫写锁,简称X锁。顾名思义,排他锁不能和其他锁共存。如果一个事务获得了一个数据行的排他锁,那么其他事务就不能获得该行的其他锁,包括共享锁和排他锁。获取的排他锁事务可以读取和修改数据行。

乐观锁定:乐观锁定是一种相对悲观的锁定。乐观锁定假设数据的一般情况不会引起冲突,因此在数据提交更新时,会正式检查数据是否存在冲突。如果是冲突的,它会向用户返回异常信息,让用户决定怎么做。乐观锁定适合读多写少的场景,可以提高程序的吞吐量。乐观锁定采用了更宽松的锁定机制。也是避免因数据库假象和业务处理时间过长而导致数据处理错误的机制。但是乐观锁定不会刻意使用数据库本身的锁定机制,而是根据数据本身来保证数据的正确性。乐观锁定的实现:

1.CAS实现:java中java.util.concurrent.atomic包下的原子变量使用乐观锁定的CAS实现方法。

2.版本号控制:通常,数据版本号版本字段被添加到数据表中,以指示数据被修改的次数。当数据被修改时,版本值将为1。当线程A想要更新数据时,也会在读取数据的同时读取版本值。提交更新时,如果刚刚读取的版本值等于当前数据库中的版本值,则在更新成功之前不会更新。

3.乐观并发控制认为事务之间数据竞争的概率比较小,所以尽量直接做,一直锁到提交,这样就不会出现锁或者死锁的情况。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/146470.html

(0)

相关推荐

  • css如何清除背景图片重复

    技术css如何清除背景图片重复这篇文章主要为大家展示了“css如何清除背景图片重复”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css如何清除背景图片重复”这篇文章吧。

    攻略 2021年11月14日
  • mybatis的使用步骤

    技术mybatis的使用步骤 mybatis的使用步骤1.什么是mybatisMyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDB

    礼包 2021年11月19日
  • 一句,你读过最美的一句话是什么

    技术一句,你读过最美的一句话是什么之一,友人在信中说:“那时只知沉湎于对生命的思考,常被一种极大的感召召唤到深邃中,思索一些人性与社会方面的东西”一句。许是源于对生命和理想的探索与追求,友人才作如此的叙述。哭墙隐现于生命

    生活 2021年10月20日
  • spring基于领域分析设计的架构规范

    技术spring基于领域分析设计的架构规范本篇内容主要讲解“spring基于领域分析设计的架构规范”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“spring基于领域分析设计的

    攻略 2021年11月16日
  • 唐僧性格,唐僧的人物性格,300字

    技术唐僧性格,唐僧的人物性格,300字唐 僧唐僧性格:俗家姓陈,乳名江流,法名玄奘,唐朝第一高僧,所以被人们称为唐僧。西行取经时,唐朝太宗皇帝李世民赐法名三藏。唐僧十八岁出家皈依佛门,经常青灯夜读,对佛家经典研修不断,而

    生活 2021年10月26日
  • vxworks怎么看任务使用情况(vxworks操作系统用在哪儿)

    技术vxworks中系统任务有哪些小编给大家分享一下vxworks中系统任务有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!根据配置的不同,VxWorks系统在启动时,会同步启动一些系统任务,其中有

    攻略 2021年12月22日