首页 > 其他分享 >乐观锁

乐观锁

时间:2023-10-08 20:35:03浏览次数:36  
标签:请求 版本号 数据库 购票 乐观 版本

在最近的springboot的学习中,了解到了一种java用于处理并发问题的一种机制——乐观锁。接下来我会简单的介绍一下它的原理。

首先我们为什么需要乐观锁,举一个简单的例子,在国庆节的时候,我们打算出门旅行,这时候我想去北京的故宫博物院,恰逢放假,买票的人也不少,我们选择线上购票,由于供不应求,数据库中的票很快就被抢的就剩下了一张,这个时候,有100个人发起这个购票请求,如若都去响应成功显然是不符合常理的,这个时候,我们可以对票的数量上一把乐观锁。

乐观锁引入了一个新的字段实现了对数据的操作保一性——版本号。当执行对于票的剩余量进行请求时,每请求都会修改相应的版本号,例如A申请购票把版本加一变成了1,B也申请把版本变成了2,当A的操作试图对数据库中的数据修改(购票请求)时,因为版本不匹配而失败,所以B就卖到了仅剩下的最后一张门票。

标签:请求,版本号,数据库,购票,乐观,版本
From: https://www.cnblogs.com/130-gzh/p/17750066.html

相关文章

  • 悲观锁与乐观锁
    悲观锁悲观锁就是某个事务在更新数据过程中将数据锁定,其他任何事务都不能读取或修改,必须修改完成后才能访问数据(类似于Java的线程同步锁机制) 乐观锁乐观锁并不是一种数据库锁机制,而是一种冲突检测机制(版本冲突检测机制和时间戳冲突检测机制),它的特点就是并发性较好,事务修改数......
  • 悲观锁与乐观锁
    乐观锁:顾名思义,乐观锁就是持比较乐观态度的锁。就是在操作数据时非常乐观,认为别的线程不会同时修改数据,所以不会上锁,但是在更新的时候会判断在此期间别的线程有没有更新过这个数据。悲观锁:就是持悲观态度的锁。就在操作数据时比较悲观,每次去拿数据的时候认为别的线程也会同时修......
  • 乐观锁的原理解析
    CAS(比较与交换,Compareandswap)是一种有名的无锁算法,它是乐观锁的一种实现方式。所以在进行CAS原理分析的时候,我们先来了解什么是乐观锁,什么是悲观锁~乐观锁与悲观锁乐观锁和悲观锁是在数据库中引入的名词,但是在我们Java的JUC里面的锁也引入类似的思想!我们来看看两种锁的概念......
  • 乐观锁和悲观锁
    乐观锁:概念:悲观想法,每次去拿数据的时候都会认为别人会进行修改,所以在每次拿数据的时候都会进行上锁。这样别人想要拿数据的时候就会被挡住,直至悲观锁被释放,悲观锁中的额共享资源每次都只能给一个线程使用,其他线程堵塞,直至用完后再将资源转让给其他线程。效率:处理加锁解锁的机制会......
  • 【面试题精讲】Mysql如何实现乐观锁
    有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top首发博客地址文章更新计划系列文章地址在MySQL中,可以通过使用乐观锁来实现并发控制,以避免数据冲突和并发更新问题。乐观锁是一种乐观的思想,它假设并发操作不会导致冲突,只......
  • 乐观锁和悲观锁问题
    【BAT面试题系列】面试官:你了解乐观锁和悲观锁吗? 乐观锁和悲观锁问题,是出现频率比较高的面试题。本文将由浅入深,逐步介绍它们的基本概念、实现方式(含实例)、适用场景,以及可能遇到的面试官追问,希望能够帮助你打动面试官。前言乐观锁和悲观锁问题,是出现频率比较高的面......
  • C# 乐观锁和悲观锁
    1.概要乐观锁(OptimisticLocking)乐观锁的核心思想是假设在大多数情况下,资源不会发生冲突,因此允许多个用户或线程同时读取和修改资源。只有在真正发生冲突的时候才会进行冲突解决。乐观锁的工作原理如下:版本标识或时间戳:在资源中引入一个版本标识(Version)或时间戳(Timestamp)字段......
  • mybatisplus中设置乐观锁,首先需要在表结构中添加一个字段表示乐观锁,之后再domain中对
    2023-09-10version字段表示乐观锁 在表结构中添加一个字段表示乐观锁packagecom.hh.domain;importcom.baomidou.mybatisplus.annotation.TableLogic;importcom.baomidou.mybatisplus.annotation.TableName;importcom.baomidou.mybatisplus.annotation.Version;impo......
  • 在代码中配置乐观锁插件和分页插件
    在代码中配置乐观锁插件和分页插件在代码中配置乐观锁插件和分页插件,您可以按照以下步骤进行操作:配置乐观锁插件:乐观锁插件是MyBatisPlus提供的功能之一,您可以在配置类中进行配置。假设您使用的是SpringBoot,可以创建一个配置类(如MyBatisConfig)并添加@Configuration注解,......
  • 乐观锁的配置与实现
    首先第一步:在数据表中添加version字段: 第二步:在实体类中添加对应字段:并加上@Version注解第三步:配置乐观锁拦截器实现锁机制对应的动态sql语句拼装: 第四步测试: ......