线程池的管理方法及装置、电子设备制造方法及图纸

技术编号:37846538 阅读:14 留言:0更新日期:2023-06-14 22:31
本发明专利技术实施例提供了一种线程池的管理方法及装置、电子设备。该方法包括:在检测到第一任务的情况下,从线程池调用链中确定执行第二任务的第一线程池,其中,所述线程池调用链为多个线程池组成的调用链,所述第一任务为执行所述第二任务过程中提交的子任务;选择所述线程池调用链中的第二线程池执行所述第一任务,其中,所述第二线程池于所述线程池调用链中的第一位置处于所述第一线程池于所述线程池调用链中的第二位置之后。本发明专利技术实施例使得第一任务和第二任务由不同的线程池分别进行处理,解决了父子任务进入到同一个线程池竞争线程资源导致的死锁问题。资源导致的死锁问题。资源导致的死锁问题。

【技术实现步骤摘要】
线程池的管理方法及装置、电子设备


[0001]本专利技术涉及线程池
,尤其涉及一种线程池的管理方法及装置、电子设备。

技术介绍

[0002]线程池是一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。
[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]可选地,所述装置还包括:
[0039]第三调整模块,用于在目标线程池的活跃线程数小于最大线程数的持续时长未超过时长阈值的情况下,延长所述目标线程池的存活时间。
[0040]第三方面,本专利技术实施例还提供一种电子设备,该电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实
现如上所述的线程池的管理方法中的步骤。
[0041]第四方面,本专利技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的线程池的管理方法中的步骤。
[0042]在本专利技术实施例中,在执行第二任务的过程中,若检测到作为第二任务的子任务的第一任务,首先从线程池调用链中确定执行第二任务的第一线程池,进而从线程池调用链中选择第一线程池之后的第二线程池执行第一任务,使得第一任务和第二任务由不同的线程池分别进行处理,解决了父子任务进入到同一个线程池竞争线程资源导致的死锁问题。同时,利用链式结构的线程池调用链对线程池进行管理,便于确定执行各任务的线程池以及选择执行子任务所需的线程池,实现了线程池的自动化管理。
附图说明
[0043]为了更清楚地说明本专利技术实施例的技术方案,下面将对本专利技术实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0044]图1为本专利技术实施例提供的一种线程池的管理方法的步骤流程图;
[0045]图2为本专利技术实施例提供的一种线程池的管理方法的应用架构示意图;
[0046]图3为本专利技术实施例提供的一种线程池的管理装置的结构框图;
[0047]图本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种线程池的管理方法,其特征在于,所述方法包括:在检测到第一任务的情况下,从线程池调用链中确定执行第二任务的第一线程池,其中,所述线程池调用链为多个线程池组成的调用链,所述第一任务为执行所述第二任务过程中提交的子任务;选择所述线程池调用链中的第二线程池执行所述第一任务,其中,所述第二线程池于所述线程池调用链中的第一位置处于所述第一线程池于所述线程池调用链中的第二位置之后。2.根据权利要求1所述的方法,其特征在于,所述第一线程池和所述第二线程池在所述线程池调用链中相邻。3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:在所述线程池调用链中所述第一线程池之后不存在线程池的情况下,创建新的线程池,并添加至所述线程池调用链。4.根据权利要求1所述的方法,其特征在于,在所述从线程池调用链中确定执行第二任务的第一线程池之后,所述方法还包括:在所述第二线程池的活跃线程数等于最大线程数的情况下,向所述第二任务反馈执行失败信息。5.根据权利要求4所述的方法,其特征在于,在所述向所述第二任务反馈执行失败信息之后,所述方法还包括:针对所述第二线程池记录所述执行失败消息;周期性的检测针对所述线程池调用链中各线程池记录的所述执行失败消息;在检测到上一周期内针对所述第二线程池记录有所述执行失败消息的情况下,增大所述第二线程池的最大线程数。6.根据权利要求1所述的方法,其特征在于,所述方法还包括:周期性的检测所述线程池调用链中各线程池的运行状况;在目标线程池的活跃线程数小于最大线程数的持续时长超过时长阈值的情况下,缩短所述目标线程池的存活时间,其中,所述目标线程池为所述线程池调用链中的线程池。7.根据权利要求6所述的方法,其特征在于,在所述周期性的检测所述线程池调用链中各线程池的运行状况之后,所述方法还包括:在目标线程池的活跃线程数小于最大线程数的持续时长未超过时长阈值的情况下,延长所述目标线程池的存活时间。8.一种线程池的管理装置,其特征在于,所述装置包括:管理模块,用于在检测到第一任务的情况下,从线程池调用链中确定执行第二任务的第一线程池,其中,所述线程池调用链为多个线程池组成的调用链,所述第一任务为执行...

【专利技术属性】
技术研发人员:李洋
申请(专利权)人:北京五八信息技术有限公司
类型:发明
国别省市:

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

1