1.本技术涉及软件开发技术领域,特别涉及一种线程锁管理方法、装置及存储介质。
背景技术:
2.在传统的软件开发过程中,执行锁一般由程序员进行编写,但执行锁的很多功能都是相似的,且不同的开发人员各自编写的执行锁风格各异。这会导致代码重复率高、开发效率低、开发成本高和护成本高等问题。
3.现有技术由开发人员自主编写执行锁主要存在以下几个问题,
4.1、开发人员水平参差不齐和代码风格多样,提高了出现漏洞的风险和定位漏洞的难度;
5.2、代码文件中重复代码多,消耗存储空间;
6.3、代码实现风格不统一,增加了维护人员的理解难度和出错几率,导致维护成本增加。
技术实现要素:
7.针对现有技术存在的问题,本技术主要提供一种线程锁管理方法、装置及存储介质。
8.为了实现上述目的,本技术采用的一个技术方案是:提供一种线程锁管理方法,其包括:通用接口以及通用任务执行器获取过程,利用从多个线程锁执行任务抽象出的共性代码得到通用任务接口以及通用任务执行器;任务执行过程,将多个并发线程通过通用任务接口导入通用任务执行器,并利用通用任务执行器对多个并发线程中抢占到线程锁的线程进行加锁执行。
9.本技术采用的另一个技术方案是:提供一种线程锁管理装置,其包括:通用接口以及通用任务执行器获取模块,用于利用从多个线程锁执行任务抽象出的共性代码得到通用任务接口以及通用任务执行器;任务执行模块,用于将多个并发线程通过通用任务接口导入通用任务执行器,并利用通用任务执行器对多个并发线程中抢占到线程锁的线程进行加锁执行。
10.本技术采用的另一个技术方案是:提供一种计算机可读存储介质,其存储有计算机指令,该计算机指令被操作以执行方案一中的线程锁管理方法。
11.本技术的技术方案可以达到的有益效果是:本技术设计了线程锁管理方法、装置及存储介质。该方法能够减少重复的代码,能够降低开发和维护成本,能够提高软件的开发效率,通用性强且灵活性高。
附图说明
12.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作以简单地介绍,显而易见地,下面描述中的附图是本申
请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
13.图1是本技术一种线程锁管理方法的一个具体实施方式的示意图;
14.图2是本技术一种线程锁管理装置的一个具体实施方式的示意图;
15.图3是本技术一种线程锁管理装置的一个具体实施例的示意图。
16.通过上述附图,已示出本技术明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本技术构思的范围,而是通过参考特定实施例为本领域技术人员说明本技术的概念。
具体实施方式
17.下面结合附图对本技术的较佳实施例进行详细阐述,以使本技术的优点和特征能更易于被本领域技术人员理解,从而对本技术的保护范围做出更为清楚明确的界定。
18.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
19.下面以具体地实施例对本技术的技术方案以及本技术的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本技术的实施例进行描述。
20.图1示出了本技术一种线程锁管理方法的一个具体实施方式。
21.在图1所示的具体实施方式中,线程锁管理方法主要包括,通用接口以及通用任务执行器获取过程s101,利用从多个线程锁执行任务抽象出的共性代码得到通用任务接口以及通用任务执行器;
22.任务执行过程s102,将多个并发线程通过通用任务接口导入通用任务执行器,并利用通用任务执行器对多个并发线程中抢占到线程锁的线程进行加锁执行。
23.该具体实施方式,能够减少重复的代码降低存储空间消耗,能够降低开发和维护成本,能够提高软件的开发效率,能够减少出现漏洞的风险和定位漏洞的难度,通用性强且灵活性高、降低维护成本。
24.在图1所示的具体实施方式中,线程锁管理方法,包括通用接口以及通用任务执行器获取过程s101,利用从多个线程锁执行任务抽象出的共性代码得到通用任务接口以及通用任务执行器。该过程通过抽取共性代码,减少了类似、重复的冗余代码,节省内存。
25.在本技术的一个具体实例中,传统的软件开发,每实现一个新的执行锁功能,就要将线程锁的相关代码在程序中写一遍。这种方式会使类似代码重复增加,造成内存负担,增加计算量。
26.本发明利用多个线程锁索执行任务的代码,抽象出线程锁执行任务的共性代码,组成执行锁任务工具,该执行锁任务工具包括通用任务接口以及通用任务执行器。在利用
执行锁任务工具进行线程加锁处理时,调用通用任务接口和通用任务执行器的共性代码,并对通用任务接口和通用任务执行器按照线程的参数完成配置,实现线程所对应的任务接口和任务执行器的建立。
27.在图1所示的具体实施方式中,线程锁管理方法,还包括任务执行过程s102,将多个并发线程通过通用任务接口导入通用任务执行器,并利用通用任务执行器对多个并发线程中抢占到线程锁的线程进行加锁执行。该过程在执行线程锁程序时只关注线程锁任务执行的内容,其通用性更强,适用范围更广。
28.在本技术的一个具体实例中,现实中,各种系统各种软件涉及的业务千千万万,现有技术中,每个线程在执行线程锁定时,需要其对应的接口和执行器,这导致每当要增加新的线程锁定任务时就需要引入新的接口和执行器,这会使程序冗杂,重复代码增加。
29.本发明利用通用任务接口将不同的线程引入到同一个用任务执行器中,通用执行器按照先后顺序或线程的优先级等原则,对线程所发起的加锁请求进行排序并将排序结果保存在缓存中。当心跳检测检测到执行器中没有正在执行的线程时,将排在首位的加锁请求所对应的线程判断为抢占到线程锁,利用该线程对应的任务接口引入该线程并对该线程进行加锁处理。通用任务执行器自动通过通用任务执行接口实现对线程的加锁处理,因此在使用时只需要关注执行加锁处理的任务内容,不需要关注具体的线程任务是什么,实现了执行功能与线程业务逻辑的剥离,提高了通用性。
30.具体的,利用java泛型描述接口实现通用任务接口,并利用baselockhandle实现线程的引入。
31.在本技术的一个具体实例中,任务执行过程s102还包括,根据多个并发线程中的每个线程配置通用任务接口的各个参数得到每个线程对应的配置接口;利用每个配置接口将对应每个线程导入通用任务执行器。该过程提高了开发效率、规范了开发代码、拓宽了使用场景,节省算力和储存空间,提高了开发效率,节约了成本。
32.具体的,不同的线程调用通用任务接口,并根据每个线程对应的参数配置通用任务接口,得到每个线程对应的任务接口,任务执行器利用每个线程对应的任务接口将线程和线程发出的加锁请求引入任务执行器中。特别的,任务执行器仅在线程抢占到线程锁时引入对应的线程,并对引入的线程锁进行加锁处理。利用通用任务接口和线程的对应参数实现线程的引入,能够提高通用性,减少开发过程中重复编写线程锁程序的过程。
33.在本技术的一个具体实例中,任务执行过程s102还包括,利用心跳检测对线程锁是否正在执行任务进行检测;若检测到线程锁不在执行任务,则对抢占到线程锁的线程进行加锁执行。该过程只需在抢占到线程锁时引入线程,能够减少在进行加锁处理时的计算量,实现通用。
34.具体的,在通用任务执行器中,通过心跳检测方法检测执行器中是否还存在正在执行的线程锁。在任务执行器中存在执行的线程锁时,不对任何线程进行加锁处理,缓存中线程发出的加锁请求继续等待直至请求的达到失效时间,清除缓存中的加锁请求;或者,当缓存中线程发出的加锁请求超过等待的次数,清除缓存中该线程对应的加锁请求并返回该线程的执行异常信息。
35.在任务执行器中不存在执行的线程锁时,根据缓存中发出加锁请求的线程的名称在缓存中的位置顺序,以及,加锁请求的等待时间是否达到失效时间,判定加锁请求所对应
的线程是否成功抢占到线程锁。在线程所对应的加锁请求排在缓存中的第一位或优先级最高,且加锁请求的等待时间未达到失效时间,则判定排在第一位的线程抢占到了线程锁。将抢占到线程锁的线程通过任务接口引入,并在任务执行器中对引入的线程进行加锁。
36.在本技术的一个具体实例中,任务执行过程s102还包括,在利用通用任务执行器对多个并发线程中抢占到线程锁的线程进行加锁执行之前,对缓存中是否存在抢占到线程锁的线程的抢占线程锁请求进行检测,若存在抢占线程锁请求,则指定抢占线程锁请求失效时间。该过程能节省缓存的存储空间,确保加锁处理准确正确的进行。
37.具体的,当任务执行器中没有正在执行的线程,且已经确定了要进行加锁的线程锁,根据线程的名称判断缓存中是否还存在线程所发出的加锁请求,若缓存中存在线程的加锁请求,则在确定线程已经抢占到线程锁时对缓存中的加锁请求设置失效时间,清除缓存中该线程的加锁请求。
38.在本技术的一个具体实例中,任务执行过程s102还包括,对任务执行过程的执行状态进行结果返回以及日记记录。该过程将程序执行结果和处理过程进行记录和展示,有利于开发人员对程序的处理过程进行数据调用和了解。
39.具体的,在进行日记记录时,将处理结果分为正常执行完处理任务的正常日记记录和处理异常的异常日记记录,以及,用于实时返回处理信息的处理状态第三个部分。其中,当加锁请求的等待次数超过规定的等待次数,以及通用任务执行器在通过线程对应的任务接口引入线程失败时,更新异常日记记录。当通用任务执行器通过任务接口成功的引入线程,并实现对该线程的加锁操作时,更新正常日记记录。
40.在进行结果展示时,展示程序处理的实时处理状态、异常日记记录和正常日记记录,其中,对于正常信息可以呈现为“执行正常”、“正确”、“√”等形式,对于异常信息可以呈现为“执行异常”、“错误”、
“×”
等形式,该形式本发明不作限制。
41.图2示出了本技术一种线程锁管理装置的具体实施方式。
42.在图2所示的具体实施方式中,线程锁管理装置主要包括:通用接口以及通用任务执行器获取模块201,用于利用从多个线程锁执行任务抽象出的共性代码得到通用任务接口以及通用任务执行器;
43.任务执行模块202,用于将多个并发线程通过通用任务接口导入通用任务执行器,并利用通用任务执行器对多个并发线程中抢占到线程锁的线程进行加锁执行。
44.该具体实施方式,能够减少重复的代码,能够降低开发和维护成本,能够提高软件的开发效率,通用性强且灵活性高。
45.在本技术的一个具体实例中,线程锁管理装置还包括,接口配置模块,用于根据多个并发线程中的每个线程配置通用任务接口的各个参数得到每个线程对应的配置接口,利用每个配置接口将对应每个线程导入通用任务执行器。
46.在本技术的一个具体实例中,线程锁管理装置还包括,加锁执行模块,用于利用心跳检测对线程锁是否正在执行任务进行检测;若检测到线程锁不在执行任务,则对抢占到线程锁的线程进行加锁执行。
47.在本技术的一个具体实例中,线程锁管理装置还包括,结果记录和展示模块,用于对任务执行过程的执行状态进行结果返回以及日记记录。
48.具体的,结果记录和展示模块对正常处理结果以及异常处理结果进行记录及展
示,其中,结果记录能够方便客户查找历史操作记录时可以清晰明了的看到所有线程的执行结果以及线程的其他信息。展示模块能够使用户在执行线程时直观的看到线程的执行情况。对于正常信息可以呈现为“执行正常”、“正确”、“√”等形式,对于异常信息可以呈现为“执行异常”、“错误”、
“×”
等形式,该形式本发明不作限制。
49.该具体实施例,使用户能够更清晰直观的了解程序的运行情况,以便根据实际情况作出进一步的处理。
50.在本技术的一个具体实例中,如图3,线程锁管理装置由设置交互层、逻辑处理中心层、日记记录层和结果展示层。其中,设置交互层,用于利用通用接口引入线程、获取线程的参数和建立通用接口;逻辑处理中心层,用于判断线程是否抢到线程锁,以及根据判断结果进行后续的处理;日记记录层,用于记录异常处理结果和正常处理结果;结果展示层,用于展示异常处理结果和正常处理结果,以及处理状态。
51.具体的,设置交互层包括,处理中心、抢占处理方法和参数配置。其中,处理中心,用于引入线程、缓存线程锁信息和引入日记记录时需要的公共参数;抢占处理方法,用于建立通用接口;参数配置,用于配置线程的抢占锁请求名称,以及,线程的抢占锁请求等待时间和重复次数等参数。
52.逻辑处理中心层,用于判断线程是否抢到锁,在线程抢占到锁时对通用执行器进行心跳检测,若通用执行器未执行锁定线程的任务,对抢占到锁的线程执行锁定处理。在线程没有抢占到锁时,根据程的抢占锁请求等待时间和重复次数等参数判定线程是等待下一次抢占锁还是抢占锁失败返回异常信息。
53.日记记录层包括,执行日记和异常时异常日记。其中,执行日记,用于记录执行正常时的返回结果和处理过程;异常时异常日记,用于记录执行异常时的返回结果和处理过程。
54.结果展示层包括,处理状态、处理结果和处理异常返回异常信息。其中,处理状态,用于展示实时的处理状态;处理结果,用于展示执行日记的内容;处理异常返回异常信息,用于根据异常时异常日记的内容展示异常原因。
55.该具体实施例,提高了线程锁管理装置的通用性和灵活性,降低了开发软件的开发成本,降低了维护成本。
56.本技术提供的线程锁管理装置,可用于执行上述任一实施例描述的线程锁管理方法,其实现原理和技术效果类似,在此不再赘述。
57.在本技术的另一个具体实施方式中,一种计算机可读存储介质,其存储有计算机指令,计算机指令被操作以执行上述实施例中描述的线程锁管理方法。
58.在本技术的一个具体实施例中,本技术一种线程锁管理方法中各功能模块可直接在硬件中、在由处理器执行的软件模块中或在两者的组合中。
59.软件模块可驻留在ram存储器、快闪存储器、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可装卸盘、cd-rom或此项技术中已知的任何其它形式的存储介质中。示范性存储介质耦合到处理器,使得处理器可从存储介质读取信息和向存储介质写入信息。
60.处理器可以是中央处理单元(英文:central processing unit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digital signal processor,简称:dsp)、专用集成电路(英文:application specific integrated circuit,简称:asic)、现场可编程
门阵列(英文:field programmable gate array,简称:fpga)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或其任何组合等。通用处理器可以是微处理器,但在替代方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如dsp与微处理器的组合、多个微处理器、结合dsp核心的一个或一个以上微处理器或任何其它此类配置。在替代方案中,存储介质可与处理器成一体式。处理器和存储介质可驻留在asic中。asic可驻留在用户终端中。在替代方案中,处理器和存储介质可作为离散组件驻留在用户终端中。
61.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
62.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
63.以上所述仅为本技术的实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
技术特征:
1.一种线程锁管理方法,其特征在于,包括:通用接口以及通用任务执行器获取过程,利用从多个线程锁执行任务抽象出的共性代码得到通用任务接口以及通用任务执行器;任务执行过程,将多个并发线程通过所述通用任务接口导入所述通用任务执行器,并利用所述通用任务执行器对所述多个并发线程中抢占到线程锁的线程进行加锁执行。2.根据权利要求1所述的线程锁管理方法,其特征在于,所述将多个并发线程通过所述通用任务接口导入所述通用任务执行器的过程包括,根据所述多个并发线程中的每个线程配置所述通用任务接口的各个参数得到所述每个线程对应的配置接口;利用每个配置接口将对应所述每个线程导入所述通用任务执行器。3.根据权利要求1所述的线程锁管理方法,其特征在于,所述利用所述通用任务执行器对所述多个并发线程中抢占到线程锁的线程进行加锁执行的过程包括,利用心跳检测对所述线程锁是否正在执行任务进行检测;若检测到所述线程锁不在执行任务,则对抢占到所述线程锁的所述线程进行所述加锁执行。4.根据权利要求1所述的线程锁管理方法,其特征在于,还包括,在所述利用所述通用任务执行器对所述多个并发线程中抢占到线程锁的线程进行加锁执行之前,对缓存中是否存在抢占到线程锁的所述线程的抢占线程锁请求进行检测,若存在所述抢占线程锁请求,则指定所述抢占线程锁请求失效时间。5.根据权利要求1-4任一所述的线程锁管理方法,其特征在于,还包括,对所述任务执行过程的执行状态进行结果返回以及日记记录。6.一种线程锁管理装置,其特征在于,包括:通用接口以及通用任务执行器获取模块,用于利用从多个线程锁执行任务抽象出的共性代码得到通用任务接口以及通用任务执行器;任务执行模块,用于将多个并发线程通过所述通用任务接口导入所述通用任务执行器,并利用所述通用任务执行器对所述多个并发线程中抢占到线程锁的线程进行加锁执行。7.根据权利要求6所述的线程锁管理装置,其特征在于,接口配置模块,用于根据所述多个并发线程中的每个线程配置所述通用任务接口的各个参数得到所述每个线程对应的配置接口,利用每个配置接口将对应所述每个线程导入所述通用任务执行器。8.根据权利要求6所述的线程锁管理装置,其特征在于,加锁执行模块,用于利用心跳检测对所述线程锁是否正在执行任务进行检测;若检测到所述线程锁不在执行任务,则对抢占到所述线程锁的所述线程进行所述加锁执行。9.根据权利要求6所述的线程锁管理装置,其特征在于,还包括,结果记录和展示模块,用于对所述任务执行过程的执行状态进行结果返回以及日记记录。10.一种计算机可读存储介质,其存储有计算机指令,其特征在于,所述计算机指令被操作以执行权利要求1-5中任一项所述的线程锁管理方法。
技术总结
本申请公开了一种线程锁管理方法、装置及存储介质,属于软件开发技术领域。该方法主要包括:利用从多个线程锁执行任务抽象出的共性代码得到通用任务接口以及通用任务执行器;将多个并发线程通过通用任务接口导入通用任务执行器,并利用通用任务执行器对多个并发线程中抢占到线程锁的线程进行加锁执行。本申请能够减少重复的代码,能够降低开发和维护成本,能够提高软件的开发效率,通用性强且灵活性高。高。高。
技术研发人员:郝桃 钟敏德 覃克天
受保护的技术使用者:北京联创新天科技有限公司
技术研发日:2021.12.01
技术公布日:2022/3/8