CN106681809A - 一种基于锁的线程管理方法及装置 - Google Patents
一种基于锁的线程管理方法及装置 Download PDFInfo
- Publication number
- CN106681809A CN106681809A CN201611100549.3A CN201611100549A CN106681809A CN 106681809 A CN106681809 A CN 106681809A CN 201611100549 A CN201611100549 A CN 201611100549A CN 106681809 A CN106681809 A CN 106681809A
- Authority
- CN
- China
- Prior art keywords
- lock
- lock resource
- thread management
- resource
- threshold value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于锁的线程管理方法,包括步骤:S100、当接收到获取锁资源请求时,获取已分配锁资源数量信息;S200、根据所述已分配锁资源数量信息判断已分配的锁资源数量是否大于预设阈值;若是,重复执行步骤S200;否则执行下一步;S300、接受所述获取锁请求,为发起获取锁资源请求的线程分配锁资源。本发明提供一种基于锁的线程管理方法及装置,能够对锁资源进行监控,可以避免出现因持续执行锁行为监控导致的过量占用***处理资源的问题。
Description
技术领域
本发明涉及领域,尤其涉及一种基于锁的线程管理方法及装置。
背景技术
Java服务器程序一般要提供高并发的服务能力,多线程使得服务的并发量大大提升。为了解决资源访问冲突的问题,锁是一种很普遍使用的技术,即多个线程同时访问一个资源时,由于某些资源存在特殊性,一次只能被一个线程访问,比如:要对文件进行写入操作,如果多个线程同时写入会造成文件内容混乱的问题。因此,要对文件进行写操作,必须设定一把锁,只有获取到锁的线程才能对文件进行写入。现实情况中,有很多地方都需要用到锁。
现在Java中锁是比较成熟的技术点,但即便如此,在实际的使用过程中,还是很容易出现问题,比如某个线程一直占用着某个资源,一直不释放,其它线程会一直等待阻塞。由于客户端的请求不断产生,线程也会相应增加,如果资源一直得不到释放,很快服务端会产生大量的线程,从而使得服务器的资源耗尽,失去服务能力。
发明内容
为解决上述技术问题,本发明提供一种基于锁的线程管理方法及装置,能够对锁资源进行监控,可以避免出现因持续执行锁行为监控导致的过量占用***处理资源的问题。
本发明提供的技术方案如下:
本发明公开了一种基于锁的线程管理方法,包括步骤:S100、当接收到获取锁资源请求时,获取已分配锁资源数量信息;S200、根据所述已分配锁资源数量信息判断已分配的锁资源数量是否大于预设阈值;若是,重复执行步骤S200;否则执行下一步;S300、接受所述获取锁请求,为发起获取锁资源请求的线程分配锁资源。
进一步优选的,所述步骤S100之前还包括步骤:S010、设置所述预设阈值;所述预设阈值为用户设置的最大的锁资源数量;S020、设置预设时长;所述预设时长为用户设置的最长的锁资源被占用的时间。
本发明还公开另一种基于锁的线程管理方法,包括步骤:S100、当接收到获取锁资源请求时,获取已分配锁资源数量信息;S200、根据所述已分配锁资源数量信息判断已分配的锁资源数量是否大于预设阈值;若是,重复执行步骤S200;否则执行下一步;S300、接受所述获取锁请求,为发起获取锁资源请求的线程分配锁资源;S400、监控已分配的锁资源的状态;S500、判断已分配的锁资源被占用的时间是否超过所述预设时长;若是,则强制释放锁资源。
进一步优选的,还包括步骤:S600、当有锁资源释放时,更新所述已分配锁资源数量信息。
本发明还公开一种基于锁的线程管理装置,包括:获取模块,用于当接收到获取锁资源请求时,获取已分配锁资源数量信息;数量判断模块,用于根据所述已分配锁资源数量信息判断已分配的锁资源数量是否大于预设阈值;分配模块,用于当已分配的锁资源数量大于预设阈值时,接受所述获取锁资源请求,为发起获取锁资源请求的线程分配锁资源。
进一步优选的,还包括:设置模块,用于设置所述预设阈值;以及设置预设时长;所述预设阈值为用户设置的最大的锁资源数量;所述预设时长为用户设置的最长的锁资源被占用的时间。
本发明还公开一种基于锁的线程管理装置,包括:获取模块,用于当接收到获取锁资源请求时,获取已分配锁资源数量信息;数量判断模块,用于根据所述已分配锁资源数量信息判断已分配的锁资源数量是否大于预设阈值;分配模块,用于当已分配的锁资源数量大于预设阈值时,接受所述获取锁资源请求,为发起获取锁资源请求的线程分配锁资源;监控模块,用于监控已分配的锁资源的状态;时长判断模块,用于判断已分配的锁资源被占用的时间是否超过所述预设时长;释放模块,用于当判断已分配的锁资源被占用的时间超过所述预设时长时,强制释放锁资源。
进一步优选的,还包括:更新模块,用于当有锁资源释放时,更新所述已分配锁资源数量信息。
与现有技术相比,本发明中所有的线程锁采用工厂模式获取,由一个对象统一分配锁资源,这样公共分配了多少锁,每个锁消耗了多长时间都可以被监控。本发明对已分配的锁数量设置预设阈值,如果监控到当前已分配的锁的数量达到了预设阈值,则不再接受新的请求,可以避免出现因持续执行锁行为监控导致的过量占用***处理资源的问题,同时,当某个线程占用锁资源的时间达到预设时长时,本发明会强制释放该锁资源,减少锁资源的浪费,为***合理安排资源。
附图说明
下面将以明确易懂的方式,结合附图说明优选实施方式,对本发明予以进一步说明。
图1为本发明一种基于锁的线程管理方法的主要步骤示意图;
图2为本发明一种基于锁的线程管理方法的另一个具体实施例的步骤示意图;
图3为本发明一种基于锁的线程管理方法的流程图;
图4为本发明一种基于锁的线程管理装置的主要组成示意图;
图5为本发明一种基于锁的线程管理装置的完整组成示意图。
附图标号说明:
10、获取模块,20、数量判断模块,30、分配模块,40、设置模块,50、监控模块,60、时长判断模块,70、释放模块,80、更新模块。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
图1为本发明一种基于锁的线程管理方法的主要步骤示意图,如图1所示,一种基于锁的线程管理方法,包括步骤:S100、当接收到获取锁资源请求时,获取已分配锁资源数量信息;S200、根据所述已分配锁资源数量信息判断已分配的锁资源数量是否大于预设阈值;若是,重复执行步骤S200;否则执行下一步;S300、接受所述获取锁请求,为发起获取锁资源请求的线程分配锁资源。
本发明中所有的线程锁采用工厂模式获取,由一个对象统一分配锁资源,这样公共分配了多少锁,每个锁消耗了多长时间都可以被监控。本发明对已分配的锁数量设置预设阈值,如果监控到当前已分配的锁的数量达到了预设阈值,则不再接受新的请求,可以避免出现因持续执行锁行为监控导致的过量占用***处理资源的问题。
优选的,所述步骤S100之前还包括步骤:S010、设置所述预设阈值;所述预设阈值为用户设置的最大的锁资源数量;S020、设置预设时长;所述预设时长为用户设置的最长的锁资源被占用的时间。
具体的,图2为本发明一种基于锁的线程管理方法的另一个具体实施例的步骤示意图。如图2所示,另一种基于锁的线程管理方法,包括步骤:S100、当接收到获取锁资源请求时,获取已分配锁资源数量信息;S200、根据所述已分配锁资源数量信息判断已分配的锁资源数量是否大于预设阈值;若是,重复执行步骤S200;否则执行下一步;S300、接受所述获取锁请求,为发起获取锁资源请求的线程分配锁资源;S400、监控已分配的锁资源的状态;S500、判断已分配的锁资源被占用的时间是否超过所述预设时长;若是,则强制释放锁资源。
优选的,还包括步骤:S600、当有锁资源释放时,更新所述已分配锁资源数量信息。
图3为本发明一种基于锁的线程管理方法的流程图。如图3所示,本发明的工作流程具体如下:
300、开始。
310、用户设置预设阈值和预设时长。
320、接收获取锁资源请求。
330、根据所述已分配锁资源数量信息判断已分配的锁资源数量是否大于预设阈值;若是,重复执行步骤330;否则,执行下一步。
340、接受所述获取锁请求,为发起获取锁资源请求的线程分配锁资源。
350、监控已分配的锁资源的状态。
360、判断已分配的锁资源被占用的时间是否超过所述预设时长;若是,执行步骤370;否则,执行步骤380。
370、强制释放锁资源,返回执行步骤320。
380、结束。
图4为本发明一种基于锁的线程管理装置的主要组成示意图。如图4所示,一种基于锁的线程管理装置,包括:获取模块10,用于当接收到获取锁资源请求时,获取已分配锁资源数量信息;数量判断模块20,用于根据所述已分配锁资源数量信息判断已分配的锁资源数量是否大于预设阈值;分配模块30,用于当已分配的锁资源数量大于预设阈值时,接受所述获取锁资源请求,为发起获取锁资源请求的线程分配锁资源。
本发明中所有的线程锁采用工厂模式获取,由一个对象统一分配锁资源,这样公共分配了多少锁,每个锁消耗了多长时间都可以被监控。本发明对已分配的锁数量设置预设阈值,如果监控到当前已分配的锁的数量达到了预设阈值,则不再接受新的请求,可以避免出现因持续执行锁行为监控导致的过量占用***处理资源的问题。
优选的,还包括:设置模块40,用于设置所述预设阈值;以及设置预设时长;所述预设阈值为用户设置的最大的锁资源数量;所述预设时长为用户设置的最长的锁资源被占用的时间。
图5为本发明一种基于锁的线程管理装置的完整组成示意图。如图5所示,一种基于锁的线程管理装置,包括:获取模块10,用于当接收到获取锁资源请求时,获取已分配锁资源数量信息;数量判断模块20,用于根据所述已分配锁资源数量信息判断已分配的锁资源数量是否大于预设阈值;分配模块30,用于当已分配的锁资源数量大于预设阈值时,接受所述获取锁资源请求,为发起获取锁资源请求的线程分配锁资源;监控模块50,用于监控已分配的锁资源的状态;时长判断模块60,用于判断已分配的锁资源被占用的时间是否超过所述预设时长;释放模块70,用于当判断已分配的锁资源被占用的时间超过所述预设时长时,强制释放锁资源。
具体的,如果监控到当前已分配的锁子资源被线程占用的时间达到预设时长,则强制该线程释放该锁资源,减少锁资源的浪费,为***合理安排资源。
优选的,还包括:更新模块80,用于当有锁资源释放时,更新所述已分配锁资源数量信息。
需要说明的是,本装置中各模块之间的信息交互、执行过程等内容与上述方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (8)
1.一种基于锁的线程管理方法,其特征在于,包括步骤:
S100、当接收到获取锁资源请求时,获取已分配锁资源数量信息;
S200、根据所述已分配锁资源数量信息判断已分配的锁资源数量是否大于预设阈值;若是,重复执行步骤S200;否则执行下一步;
S300、接受所述获取锁请求,为发起获取锁资源请求的线程分配锁资源。
2.如权利要求1所述的基于锁的线程管理方法,其特征在于,所述步骤S100之前还包括步骤:
S010、设置所述预设阈值;所述预设阈值为用户设置的最大的锁资源数量;
S020、设置预设时长;所述预设时长为用户设置的最长的锁资源被占用的时间。
3.如权利要求2所述的基于锁的线程管理方法,其特征在于,还包括步骤:
S400、监控已分配的锁资源的状态;
S500、判断已分配的锁资源被占用的时间是否超过所述预设时长;若是,则强制释放锁资源。
4.如权利要求3所述的基于锁的线程管理方法,其特征在于,还包括步骤:
S600、当有锁资源释放时,更新所述已分配锁资源数量信息。
5.一种基于锁的线程管理装置,其特征在于,包括:
获取模块,用于当接收到获取锁资源请求时,获取已分配锁资源数量信息;
数量判断模块,用于根据所述已分配锁资源数量信息判断已分配的锁资源数量是否大于预设阈值;
分配模块,用于当已分配的锁资源数量大于预设阈值时,接受所述获取锁资源请求,为发起获取锁资源请求的线程分配锁资源。
6.如权利要求5所述的基于锁的线程管理装置,其特征在于,还包括:
设置模块,用于设置所述预设阈值;以及设置预设时长;所述预设阈值为用户设置的最大的锁资源数量;所述预设时长为用户设置的最长的锁资源被占用的时间。
7.如权利要求6所述的基于锁的线程管理装置,其特征在于,还包括:
监控模块,用于监控已分配的锁资源的状态;
时长判断模块,用于判断已分配的锁资源被占用的时间是否超过所述预设时长;
释放模块,用于当判断已分配的锁资源被占用的时间超过所述预设时长时,强制释放锁资源。
8.如权利要求7所述的基于锁的线程管理装置,其特征在于,还包括:
更新模块,用于当有锁资源释放时,更新所述已分配锁资源数量信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611100549.3A CN106681809A (zh) | 2016-12-05 | 2016-12-05 | 一种基于锁的线程管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611100549.3A CN106681809A (zh) | 2016-12-05 | 2016-12-05 | 一种基于锁的线程管理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106681809A true CN106681809A (zh) | 2017-05-17 |
Family
ID=58866229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611100549.3A Pending CN106681809A (zh) | 2016-12-05 | 2016-12-05 | 一种基于锁的线程管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106681809A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109040266A (zh) * | 2018-08-14 | 2018-12-18 | 郑州云海信息技术有限公司 | 微服务架构中锁的管理方法和装置 |
CN109344136A (zh) * | 2018-12-13 | 2019-02-15 | 浪潮(北京)电子信息产业有限公司 | 一种共享文件***的访问方法、装置及设备 |
CN112905322A (zh) * | 2021-02-09 | 2021-06-04 | 掌阅科技股份有限公司 | 资源加锁的方法、计算设备及计算机存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1917504A (zh) * | 2005-08-20 | 2007-02-21 | 中兴通讯股份有限公司 | 一种避免资源数据共享访问导致死锁的加锁方法 |
CN103473137A (zh) * | 2013-09-16 | 2013-12-25 | 东软集团股份有限公司 | 避免死锁的资源分配方法及*** |
CN104252386A (zh) * | 2013-06-26 | 2014-12-31 | 阿里巴巴集团控股有限公司 | 数据更新的加锁方法和设备 |
CN104391754A (zh) * | 2014-10-13 | 2015-03-04 | 北京星网锐捷网络技术有限公司 | 一种任务异常的处理方法及装置 |
CN105677481A (zh) * | 2015-12-31 | 2016-06-15 | 联想(北京)有限公司 | 一种数据处理方法、***及电子设备 |
-
2016
- 2016-12-05 CN CN201611100549.3A patent/CN106681809A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1917504A (zh) * | 2005-08-20 | 2007-02-21 | 中兴通讯股份有限公司 | 一种避免资源数据共享访问导致死锁的加锁方法 |
CN104252386A (zh) * | 2013-06-26 | 2014-12-31 | 阿里巴巴集团控股有限公司 | 数据更新的加锁方法和设备 |
CN103473137A (zh) * | 2013-09-16 | 2013-12-25 | 东软集团股份有限公司 | 避免死锁的资源分配方法及*** |
CN104391754A (zh) * | 2014-10-13 | 2015-03-04 | 北京星网锐捷网络技术有限公司 | 一种任务异常的处理方法及装置 |
CN105677481A (zh) * | 2015-12-31 | 2016-06-15 | 联想(北京)有限公司 | 一种数据处理方法、***及电子设备 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109040266A (zh) * | 2018-08-14 | 2018-12-18 | 郑州云海信息技术有限公司 | 微服务架构中锁的管理方法和装置 |
CN109344136A (zh) * | 2018-12-13 | 2019-02-15 | 浪潮(北京)电子信息产业有限公司 | 一种共享文件***的访问方法、装置及设备 |
CN112905322A (zh) * | 2021-02-09 | 2021-06-04 | 掌阅科技股份有限公司 | 资源加锁的方法、计算设备及计算机存储介质 |
CN112905322B (zh) * | 2021-02-09 | 2021-11-19 | 掌阅科技股份有限公司 | 资源加锁的方法、计算设备及计算机存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105320561B (zh) | 任务管理方法和*** | |
CN103297456B (zh) | 一种分布式***下共享资源的访问方法及分布式*** | |
CN110515704B (zh) | 基于Kubernetes***的资源调度方法及装置 | |
KR100509794B1 (ko) | 데이터베이스 관리시스템을 이용하는 작업들의 실시간 처리를 위한 스케줄링 방법 | |
US8219997B2 (en) | Execution the job that is divided into job tasks based on the estimated completion time | |
US6785756B2 (en) | Methods and systems for multi-policy resource scheduling | |
US6438553B1 (en) | Distributed job integrated management system and method | |
EP1385091A3 (en) | Dynamic management of virtual partition workload through service level optimization | |
CN106681809A (zh) | 一种基于锁的线程管理方法及装置 | |
CN111240838B (zh) | 一种压力测试方法和装置 | |
US20060048161A1 (en) | Resource allocation method and system | |
CN108182108A (zh) | 一种定时任务集群及其执行方法 | |
CN111722928A (zh) | 一种资源调度方法、装置、电子设备及存储介质 | |
CN109858655B (zh) | 预约测试的方法及*** | |
CN111431970B (zh) | 基于微服务架构的资源分配方法、装置、设备及存储介质 | |
CN104239147A (zh) | 一种处理死锁循环方法及*** | |
DE60125540T2 (de) | Verfahren und gerät für einen ablaufsplanungstreiber zum implementieren eines protokolls mittels zeitschätzungen für anwendung mit einem gerät das keine unterbrechungen erzeugt | |
CN111163140A (zh) | 资源获取和分配的方法、装置和计算机可读存储介质 | |
CN114579323A (zh) | 一种线程处理方法、装置、设备及介质 | |
CN114461385A (zh) | 线程池调度方法、装置、设备以及可读存储介质 | |
CN104111876A (zh) | 一种基于Oracle资源计划的动态资源管理装置及方法 | |
CN113419839A (zh) | 多类型作业的资源调度方法、装置、电子设备及存储介质 | |
JP2007286703A (ja) | 親子ライセンス管理方法、親子ライセンス管理方法及び親子ライセンス管理プログラム | |
CN105094945A (zh) | 虚拟化平台线程控制方法、设备和*** | |
CN106598726A (zh) | 一种多任务管理***及其分布式部署方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170517 |