同时添加分布式锁的方法和装置、电子设备和存储介质制造方法及图纸

技术编号:37713829 阅读:16 留言:0更新日期:2023-06-02 00:08
本申请提供了一种同时添加分布式锁的方法和装置、电子设备和存储介质,其中,该方法包括:获取多个目标对象,生成加锁列表,其中,目标对象为待加锁的对象;对加锁列表赋予全局锁;在接收到全局锁加锁成功的指示信息的情况下,获取加锁列表内目标对象对应的拥有者标识信息;在未获取到拥有者标识信息或者在确定拥有者标识信息为目标对象的原始标识信息的情况下,对目标对象进行加锁,直到当前所有的目标对象已加锁完成,释放全局锁。通过本申请,解决了相关技术存在无法满足一次加多把锁的需求的问题。求的问题。求的问题。

【技术实现步骤摘要】
同时添加分布式锁的方法和装置、电子设备和存储介质


[0001]本申请涉及计算机
,尤其涉及一种同时添加分布式锁的方法和装置、电子设备和存储介质。

技术介绍

[0002]目前,在一些业务场景中,比如需要同一时刻同时读取多个订单对象,传统的订单获取采用加锁方式,比如通过@Lock注解,对一个订单对象加锁,实现在同一时间,存在一个线程操作该订单对象,后来的线程阻塞,等待前面的线程执行完方法函数之后,再释放锁,其它线程再开始执行方法函数。
[0003]由上述可知,传统的加锁方式一次只能生成一个锁,即一次只能加一把锁,实际上不同的订单对象需要在同一时间均执行读取方法函数才能满足业务需求。
[0004]因此,相关技术存在无法满足一次加多把锁的需求的问题。

技术实现思路

[0005]本申请提供了一种同时添加分布式锁的方法和装置、电子设备和存储介质,以至少解决相关技术存在无法满足一次加多把锁的需求的问题。
[0006]根据本申请实施例的一个方面,提供了一种同时添加分布式锁的方法,该方法包括:
[0007]获取多个目标对象,生成加锁列表,其中,所述目标对象为待加锁的对象;
[0008]对所述加锁列表赋予全局锁;
[0009]在接收到所述全局锁加锁成功的指示信息的情况下,获取所述加锁列表内所述目标对象对应的拥有者标识信息;
[0010]在未获取到所述拥有者标识信息或者在确定所述拥有者标识信息为所述目标对象的原始标识信息的情况下,对所述目标对象进行加锁,直到当前所有的所述目标对象已加锁完成,释放所述全局锁。
[0011]根据本申请实施例的另一个方面,还提供了一种同时添加分布式锁的装置,该装置包括:
[0012]第一获取模块,用于获取多个目标对象,生成加锁列表,其中,所述目标对象为待加锁的对象;
[0013]添加模块,用于对所述加锁列表赋予全局锁;
[0014]第二获取模块,用于在接收到所述全局锁加锁成功的指示信息的情况下,获取所述加锁列表内所述目标对象对应的拥有者标识信息;
[0015]第一释放模块,用于在未获取到所述拥有者标识信息或者在确定所述拥有者标识信息为所述目标对象的原始标识信息的情况下,对所述目标对象进行加锁,直到当前所有的所述目标对象已加锁完成,释放所述全局锁。
[0016]可选地,第一获取模块包括:
[0017]获取单元,用于获取所述目标对象的账号信息;
[0018]生成单元,用于根据多个所述账号信息,生成所述加锁列表,并将所述加锁列表作为方法入参值。
[0019]可选地,该装置还包括:
[0020]阻塞模块,用于在对所述加锁列表赋予全局锁之后,在接收到所述全局锁加锁失败的指示信息的情况下,阻塞所有所述目标对象的执行线程。
[0021]可选地,该装置还包括:
[0022]生成模块,用于在所述获取所述加锁列表内所述目标对象对应的拥有者标识信息之前,根据所述拥有者标识信息,生成拥有者标识列表,其中,所述拥有者标识列表内所述拥有者标识信息与所述账号信息之间以键值对的方式存储;
[0023]第二释放模块,用于在未获取到所述拥有者标识列表的情况下,释放所述全局锁;
[0024]第一执行模块,用于执行所述对所述加锁列表赋予全局锁的步骤。
[0025]可选地,该装置还包括:
[0026]第三获取模块,拥有在所述生成拥有者标识列表之后,在获取到所述拥有者标识列表的情况下,根据所述键值对获取到与每个所述账号信息相对应的所述拥有者标识信息。
[0027]可选地,该装置还包括:
[0028]第三释放模块,用于在所述获取所述加锁列表内所述目标对象对应的拥有者标识信息之后,在确定存在所述拥有者标识信息不是所述目标对象的所述原始标识信息的情况下,发出加锁失败指示信息,释放已加锁成功的其他对象以及所述全局锁;
[0029]第二执行模块,用于执行所述对所述加锁列表赋予全局锁的步骤。
[0030]可选地,该装置还包括:
[0031]第一确定模块,用于在所述直到当前所有的所述目标对象已加锁完成,释放所述全局锁之后,根据所述目标对象确定业务类型;
[0032]第二确定模块,用于根据所述业务类型确定业务执行代码,完成对所述目标对象的业务处理。
[0033]根据本申请实施例的又一个方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;其中,存储器,用于存储计算机程序;处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行上述任一实施例中的方法步骤。
[0034]根据本申请实施例的又一个方面,还提供了一种计算机可读的存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一实施例中的方法步骤。
[0035]在本申请实施例中,通过获取多个目标对象,生成加锁列表,其中,目标对象为待加锁的对象;对加锁列表赋予全局锁;在接收到全局锁加锁成功的指示信息的情况下,获取加锁列表内目标对象对应的拥有者标识信息;在未获取到拥有者标识信息或者在确定拥有者标识信息为目标对象的原始标识信息的情况下,对目标对象进行加锁,直到当前所有的目标对象已加锁完成,释放全局锁。由于本申请实施例通过生成加锁列表,利用全局锁对该加锁列表进行加锁,保证别的线程无法执行加锁操作,然后根据目标对象的拥有者标识信
息去确定目标对象的锁是否被其他线程拥有或者该锁是否已被添加,在该锁未被添加或者该锁未被其他线程拥有时,对目标对象进行加锁,如此循环直到当前所有的目标对象已完成加锁之后,再释放全局锁即可,以上实现了同时添加锁的需求且应用范围广阔,进而解决了相关技术存在无法满足一次加多把锁的需求的问题。
附图说明
[0036]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
[0037]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0038]图1是根据本申请实施例的一种可选的同时添加分布式锁的方法的流程示意图;
[0039]图2是根据本申请实施例的一种可选的同时添加分布式锁的方法的整体流程示意图;
[0040]图3是根据本申请实施例的一种可选的同时添加分布式锁的装置的结构框图;
[0041]图4是根据本申请实施例的一种可选的电子设备的结构框图。
具体实施方式
[0042]为了使本
的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种同时添加分布式锁的方法,其特征在于,所述方法包括:获取多个目标对象,生成加锁列表,其中,所述目标对象为待加锁的对象;对所述加锁列表赋予全局锁;在接收到所述全局锁加锁成功的指示信息的情况下,获取所述加锁列表内所述目标对象对应的拥有者标识信息;在未获取到所述拥有者标识信息或者在确定所述拥有者标识信息为所述目标对象的原始标识信息的情况下,对所述目标对象进行加锁,直到当前所有的所述目标对象已加锁完成,释放所述全局锁。2.根据权利要求1所述的方法,其特征在于,所述获取多个待加锁对象,生成加锁列表,包括:获取所述目标对象的账号信息;根据多个所述账号信息,生成所述加锁列表,并将所述加锁列表作为方法入参值。3.根据权利要求1所述的方法,其特征在于,在对所述加锁列表赋予全局锁之后,所述方法还包括:在接收到所述全局锁加锁失败的指示信息的情况下,阻塞所有所述目标对象的执行线程。4.根据权利要求2所述的方法,其特征在于,在所述获取所述加锁列表内所述目标对象对应的拥有者标识信息之前,所述方法还包括:根据所述拥有者标识信息,生成拥有者标识列表,其中,所述拥有者标识列表内所述拥有者标识信息与所述账号信息之间以键值对的方式存储;在未获取到所述拥有者标识列表的情况下,释放所述全局锁;执行所述对所述加锁列表赋予全局锁的步骤。5.根据权利要求4所述的方法,其特征在于,在所述生成拥有者标识列表之后,所述方法还包括:在获取到所述拥有者标识列表的情况下,根据所述键值对获取到与每个所述账号信息相对应的所述拥有者标识信息。6.根据权利要求1所述的方法,其特征在于,在所述获取所述加锁列表内所述目标对象对应...

【专利技术属性】
技术研发人员:张苏磊
申请(专利权)人:北京自如信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1