一种基于锁的线程管理方法及装置与流程

文档序号:11917859阅读:213来源:国知局
一种基于锁的线程管理方法及装置与流程

本发明涉及领域,尤其涉及一种基于锁的线程管理方法及装置。



背景技术:

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,用于当有锁资源释放时,更新所述已分配锁资源数量信息。

需要说明的是,本装置中各模块之间的信息交互、执行过程等内容与上述方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1