本公开涉及计算机,尤其涉及一种线程池任务执行控制方法、装置、设备及存储介质。
背景技术:
1、线程池是一种多线程处理形式,处理过程中可以将任务添加到队列,然后在创建线程后自动启动这些任务。线程池可以管理和维护多个线程,等待监督管理者分配可并发执行的任务,可以避免在处理短时间任务时创建与销毁线程的代价,线程池不仅能够保证内核的充分利用,还能防止内核被过分调度。
2、目前,软件性能优化的一种重要方法就是使用线程池技术,以降低线程创建和销毁带来的性能损耗。但是,线程池在创建之初,由于可用资源有限,线程池存在容量限制,在高负载的场景下,任务可能需要过多的线程来执行,如果此时线程池已满,就需要暂时将新任务加入等待队列,导致线程池执行任务的效率降低,并且,有些线程执行任务的时间太长,会消耗过多的线程池资源,进一步降低线程池执行任务的效率。
技术实现思路
1、为了解决上述技术问题,本公开提供了一种线程池任务执行控制方法、装置、设备及存储介质。
2、本公开实施例的第一方面提供了一种线程池任务执行控制方法,该方法包括:
3、接收目标任务;
4、监测线程池中的线程队列包括的线程的数量是否达到线程池支持的最大线程数量;
5、若线程队列包括的线程的数量达到最大线程数量,则确定线程队列中是否存在空闲状态线程;
6、若线程队列中不存在空闲状态线程,则确定线程队列中处于超时状态的线程,超时状态为线程的运行时长大于线程执行的任务对应的最大时长;
7、将任一处于超时状态的线程确定为第一目标线程;
8、控制第一目标线程结束执行任务,以使第一目标线程处于空闲状态;
9、控制第一目标线程执行目标任务。
10、本公开实施例的第二方面提供了一种线程池任务执行控制装置,该装置包括:
11、接收模块,用于接收目标任务;
12、第一监测模块,用于监测线程池中的线程队列包括的线程的数量是否达到线程池支持的最大线程数量;
13、第一确定模块,用于若线程队列包括的线程的数量达到最大线程数量,则确定线程队列中是否存在空闲状态线程;
14、第二确定模块,用于若线程队列中不存在空闲状态线程,则确定线程队列中处于超时状态的线程,超时状态为线程的运行时长大于线程执行的任务对应的最大时长;
15、第三确定模块,用于将任一处于超时状态的线程确定为第一目标线程;
16、第一控制模块,用于控制第一目标线程结束执行任务,以使第一目标线程处于空闲状态;
17、第二控制模块,用于控制第一目标线程执行目标任务。
18、本公开实施例的第三方面提供了一种计算机设备,该设备包括存储器和处理器,其中,存储器中存储有计算机程序,当计算机程序被处理器执行时,可以实现上述第一方面的线程池任务执行控制方法。
19、本公开实施例的第四方面提供了一种计算机可读存储介质,存储介质中存储有计算机程序,当计算机程序被处理器执行时,可以实现上述第一方面的线程池任务执行控制方法。
20、本公开实施例提供的技术方案与现有技术相比具有如下优点:
21、本公开实施例,通过接收目标任务;监测线程池中的线程队列包括的线程的数量是否达到线程池支持的最大线程数量;若线程队列包括的线程的数量达到最大线程数量,则确定线程队列中是否存在空闲状态线程;若线程队列中不存在空闲状态线程,则确定线程队列中处于超时状态的线程,超时状态为线程的运行时长大于线程执行的任务对应的最大时长;将任一处于超时状态的线程确定为第一目标线程;控制第一目标线程结束执行任务,以使第一目标线程处于空闲状态;控制第一目标线程执行目标任务,可以在线程池已满时,主动检查线程池中的线程的超时状态,并控制处于超时状态的线程结束执行当前任务,将新的任务加入线程池中执行,而不用使新的任务一直等待线程处理,通过及时释放线程池资源降低了任务执行的等待时间,保证线程的执行效率,提高线程池的任务执行效率。
1.一种线程池任务执行控制方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述接收目标任务之前,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,所述确定所述线程队列中处于超时状态的线程,包括:
4.根据权利要求1所述的方法,其特征在于,所述确定所述线程队列中处于超时状态的线程,包括:
5.根据权利要求1所述的方法,其特征在于,所述若所述线程队列包括的线程的数量达到所述最大线程数量,确定所述线程队列中是否存在空闲状态线程之后,所述方法还包括:
6.根据权利要求1所述的方法,其特征在于,所述若所述线程队列中不存在空闲状态线程,则确定所述线程队列中处于超时状态的线程之后,所述方法还包括:
7.根据权利要求1所述的方法,其特征在于,所述接收目标任务之后,所述方法还包括:
8.一种线程池任务执行控制装置,其特征在于,包括:
9.一种计算机设备,其特征在于,包括:
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有计算机程序,当所述计算机程序被处理器执行时,实现如权利要求1-7中任一项所述的线程池任务执行控制方法。