乐观锁和悲观锁

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

乐观锁和悲观锁。

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

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

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)

相关推荐

  • 刷抖音浏览量网址,抖音免费刷浏览量网站?

    技术刷抖音浏览量网址,抖音免费刷浏览量网站?抖音自定义刷赞网站,在线刷抖音播放量,怎样刷抖音粉丝,抖音2019年春节红包发到十亿,我们也领不到。那我们就来刷一下我们的粉丝。应该怎么刷呢,跟着小编一起来了解一下吧。抖音免费

    测评 2021年10月21日
  • 怎么进行IE6、IE7、IE8三大浏览器兼容性对比

    技术怎么进行IE6、IE7、IE8三大浏览器兼容性对比本篇文章给大家分享的是有关怎么进行IE6、IE7、IE8三大浏览器兼容性对比,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟

    攻略 2021年11月25日
  • RNN背后的数学原理是什么

    技术RNN背后的数学原理是什么RNN背后的数学原理是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 0引言现在,关于机器学习、深度学习和人工神经

    攻略 2021年12月3日
  • 视频网站首选美国服务器租用视频服务器美国

    技术视频网站首选美国服务器租用视频服务器美国随着观众对于视频质量和帧数的要求不断增高,很多传统的服务器已经很难满足用户的使用需求,因此现在大带宽的美国服务器成为了很多视频网站的首选,下面就来谈谈理由为什么视频流需要特殊类

    礼包 2021年12月17日
  • k8s service实现原理(k8s调度工作原理)

    技术k8s的原理分析是怎样的这篇文章给大家介绍k8s的原理分析是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。k8s是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护

    攻略 2021年12月15日
  • 导致JVM物理内存消耗大的Bug是怎么样的

    技术导致JVM物理内存消耗大的Bug是怎么样的导致JVM物理内存消耗大的Bug是怎么样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。概述最

    攻略 2021年10月23日