本发明涉及线程池,尤其涉及一种线程池的管理方法及装置、电子设备。
背景技术:
1、线程池是一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。
2、目前,线程池存在一套通用的管理机制。在线程池的活跃线程数未达到最大线程数的情况下,若提交了新的待处理任务,可以不断的增加活跃线程数,以处理更多的任务,直至活跃线程数等于最大线程数。此时,若提交了新的待处理任务,需等待线程池存在空闲线程后,才可利用空闲线程执行新的待处理任务。
3、然而,当前线程池的管理机制在应对父子任务的处理场景时,可能导致父子任务进入到同一个线程池竞争线程资源,进而产生死锁的问题。
技术实现思路
1、鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的线程池的管理方法及装置、电子设备。
2、第一方面,本发明实施例提供了一种线程池的管理方法,所述方法包括:
3、在检测到第一任务的情况下,从线程池调用链中确定执行第二任务的第一线程池,其中,所述线程池调用链为多个线程池组成的调用链,所述第一任务为执行所述第二任务过程中提交的子任务;
4、选择所述线程池调用链中的第二线程池执行所述第一任务,其中,所述第二线程池于所述线程池调用链中的第一位置处于所述第一线程池于所述线程池调用链中的第二位置之后。
5、可选地,所述第一线程池和所述第二线程池在所述线程池调用链中相邻。
6、可选地,所述方法还包括:
7、在所述线程池调用链中所述第一线程池之后不存在线程池的情况下,创建新的线程池,并添加至所述线程池调用链。
8、可选地,在所述从线程池调用链中确定执行第二任务的第一线程池之后,所述方法还包括:
9、在所述第二线程池的活跃线程数等于最大线程数的情况下,向所述第二任务反馈执行失败信息。
10、可选地,在所述向所述第二任务反馈执行失败信息之后,所述方法还包括:
11、针对所述第二线程池记录所述执行失败消息;
12、周期性的检测针对所述线程池调用链中各线程池记录的所述执行失败消息;
13、在检测到上一周期内针对所述第二线程池记录有所述执行失败消息的情况下,增大所述第二线程池的最大线程数。
14、可选地,所述方法还包括:
15、周期性的检测所述线程池调用链中各线程池的运行状况;
16、在目标线程池的活跃线程数小于最大线程数的持续时长超过时长阈值的情况下,缩短所述目标线程池的存活时间,其中,所述目标线程池为所述线程池调用链中的线程池。
17、可选地,在所述周期性的检测所述线程池调用链中各线程池的运行状况之后,所述方法还包括:
18、在目标线程池的活跃线程数小于最大线程数的持续时长未超过时长阈值的情况下,延长所述目标线程池的存活时间。
19、第二方面,本发明实施例还提供一种线程池的管理装置,所述装置包括:
20、管理模块,用于在检测到第一任务的情况下,从线程池调用链中确定执行第二任务的第一线程池,其中,所述线程池调用链为多个线程池组成的调用链,所述第一任务为执行所述第二任务过程中提交的子任务;
21、选择模块,用于选择所述线程池调用链中的第二线程池执行所述第一任务,其中,所述第二线程池于所述线程池调用链中的第一位置处于所述第一线程池于所述线程池调用链中的第二位置之后。
22、可选地,所述第一线程池和所述第二线程池在所述线程池调用链中相邻。
23、可选地,所述装置还包括:
24、新增模块,用于在所述线程池调用链中所述第一线程池之后不存在线程池的情况下,创建新的线程池,并添加至所述线程池调用链。
25、可选地,所述装置还包括:
26、反馈模块,用于在所述第二线程池的活跃线程数等于最大线程数的情况下,向所述第二任务反馈执行失败信息。
27、可选地,所述装置还包括:
28、记录模块,用于针对所述第二线程池记录所述执行失败消息;
29、第一检测模块,用于周期性的检测针对所述线程池调用链中各线程池记录的所述执行失败消息;
30、第一调整模块,用于在检测到上一周期内针对所述第二线程池记录有所述执行失败消息的情况下,增大所述第二线程池的最大线程数。
31、可选地,所述装置还包括:
32、第二检测模块,用于周期性的检测所述线程池调用链中各线程池的运行状况;
33、第二调整模块,用于在目标线程池的活跃线程数小于最大线程数的持续时长超过时长阈值的情况下,缩短所述目标线程池的存活时间,其中,所述目标线程池为所述线程池调用链中的线程池。
34、可选地,所述装置还包括:
35、第三调整模块,用于在目标线程池的活跃线程数小于最大线程数的持续时长未超过时长阈值的情况下,延长所述目标线程池的存活时间。
36、第三方面,本发明实施例还提供一种电子设备,该电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的线程池的管理方法中的步骤。
37、第四方面,本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的线程池的管理方法中的步骤。
38、在本发明实施例中,在执行第二任务的过程中,若检测到作为第二任务的子任务的第一任务,首先从线程池调用链中确定执行第二任务的第一线程池,进而从线程池调用链中选择第一线程池之后的第二线程池执行第一任务,使得第一任务和第二任务由不同的线程池分别进行处理,解决了父子任务进入到同一个线程池竞争线程资源导致的死锁问题。同时,利用链式结构的线程池调用链对线程池进行管理,便于确定执行各任务的线程池以及选择执行子任务所需的线程池,实现了线程池的自动化管理。
1.一种线程池的管理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述第一线程池和所述第二线程池在所述线程池调用链中相邻。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:在所述线程池调用链中所述第一线程池之后不存在线程池的情况下,创建新的线程池,并添加至所述线程池调用链。
4.根据权利要求1所述的方法,其特征在于,在所述从线程池调用链中确定执行第二任务的第一线程池之后,所述方法还包括:
5.根据权利要求4所述的方法,其特征在于,在所述向所述第二任务反馈执行失败信息之后,所述方法还包括:
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
7.根据权利要求6所述的方法,其特征在于,在所述周期性的检测所述线程池调用链中各线程池的运行状况之后,所述方法还包括:
8.一种线程池的管理装置,其特征在于,所述装置包括:
9.根据权利要求8所述的装置,其特征在于,所述第一线程池和所述第二线程池在所述线程池调用链中相邻。
10.根据权利要求8或9所述的装置,其特征在于,所述装置还包括:
11.根据权利要求8所述的装置,其特征在于,所述装置还包括:
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
13.根据权利要求8所述的装置,其特征在于,所述装置还包括:
14.根据权利要求13所述的装置,其特征在于,所述装置还包括:
15.一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述计算机程序被所述处理器执行时实现如权利要求1至7中任一项所述的线程池的管理方法的步骤。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的线程池的管理方法的步骤。