System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机,尤其涉及一种线程池管理的方法、装置、设备及介质。
技术介绍
1、随着互联网的发展,业务复杂程度日益提高,同时对信息时效性的要求也日益提高,越来越多业务要求多线程处理,传统的多线程模型中,每个线程需要创建以及销毁,而线程池是一种并发编程技术,应用于多种软件系统中,比如网络服务器,数据库管理系统、图像处理等领域。线程池可以较好地管理多线程资源,通过一定的策略控制线程的数量,根据系统的负载情况动态地分配任务到这些线程中,从而避免了频繁创建和销毁线程所带来的开销,提高线程的可重用性以及可扩展性。
2、在线程池管理的相关技术中,为了避免频繁创建、销毁线程而浪费cpu(centralprocessing unit,中央处理器)资源,一般采用队列优先机制,将线程分为核心线程(常驻线程)和非核心线程(普通线程),其中核心线程一旦创建则不可回收,普通线程可以基于空闲时间进行回收。当业务请求下降时,会造成核心线程的空闲等待;当普通线程数量突增时,又无法充分利用线程资源,线程资源无法动态分配,降低了线程池管理的效率。
技术实现思路
1、有鉴于此,本专利技术提出了一种线程池管理的方法、装置、设备及介质,至少解决了在线程池管理的相关技术中,采用队列优先机制,将线程分为核心线程和普通线程,其中核心线程一旦创建则不可回收,普通线程可以基于空闲时间进行回收。当业务请求下降时,会造成核心线程的空闲等待;当普通线程数量突增时,又无法充分利用线程资源,线程资源无法动态分配,降低了线程池
2、基于以上目的,本专利技术的实施例的一个方面提供了一种线程池管理的方法,包括:将线程池初始化为第一线程池和第二线程池,其中所述第一线程池回收线程的频率低于第二线程池回收线程的频率;通过所述第一线程池接收线程申请请求并判断所述第一线程池是否存在空闲的线程或者可创建新线程的空间,以确认是否可以从所述第一线程池中申请所述线程申请请求对应的线程;响应于确认不可以从所述第一线程池中申请所述线程申请请求对应的线程,判断所述第二线程池中是否存在空闲的线程或者可创建新线程的空间,以确认是否可以从所述第二线程池中申请所述线程申请请求对应的线程;响应于确认不可以从所述第二线程池中申请所述线程申请请求对应的线程,将所述线程申请请求存放在队列中,并等待所述队列溢出后返回至判断所述第一线程池是否存在空闲的线程或者可创建新线程的空间的步骤。
3、在一些实施例中,所述判断判断所述第一线程池是否存在空闲的线程或者可创建新线程的空间,以确认是否可以从所述第一线程池中申请所述线程申请请求对应的线程的步骤包括:判断所述第一线程池是否存在空闲的线程;响应于所述第一线程池中存在空闲的线程,从所述第一线程池中申请所述线程申请请求对应的线程;响应于所述第一线程池中不存在空闲的线程,判断所述第一线程池中当前线程的数量是否超过最大线程数量阈值;响应于所述第一线程池中当前线程的数量没有超过所述最大线程数量阈值,基于所述线程申请请求在所述第一线程池中创建对应的线程并进行申请;响应于所述第一线程池中当前线程的数量超过所述最大线程数量阈值,确认不可以从所述第一线程池中申请所述线程申请请求对应的线程。
4、在一些实施例中,所述判断所述第二线程池中是否存在空闲的线程或者可创建新线程的空间,以确认是否可以从所述第二线程池中申请所述线程申请请求对应的线程的步骤包括:判断所述第二线程池是否存在空闲的线程;响应于所述第二线程池中存在空闲的线程,从所述第二线程池中申请所述线程申请请求对应的线程。
5、在一些实施例中,所述判断所述第二线程池中是否存在空闲的线程或者可创建新线程的空间,以确认是否可以从所述第二线程池中申请所述线程申请请求对应的线程的步骤还包括:响应于所述第二线程池中不存在空闲的线程,判断所述第二线程池中当前线程的数量是否超过最大线程数量阈值;响应于所述第二线程池中当前线程的数量没有超过所述最大线程数量阈值,基于所述线程申请请求在所述第二线程池中创建对应的线程并进行申请。
6、在一些实施例中,所述判断所述第二线程池中是否存在空闲的线程或者可创建新线程的空间,以确认是否可以从所述第二线程池中申请所述线程申请请求对应的线程的步骤还包括:;响应于所述第二线程池中当前线程的数量超过所述最大线程数量阈值,确认不可以从所述第二线程池中申请所述线程申请请求对应的线程。
7、在一些实施例中,所述将线程池初始化为第一线程池和第二线程池步骤包括:将线程池划分为第一线程池和第二线程池;基于业务所需的核心线程数以及最大线程数量阈值设置所述第一线程池和所述第二线程池可申请的线程数。
8、在一些实施例中,所述将线程池初始化为第一线程池和第二线程池步骤还包括:设置所述第一线程池的空闲时间大于所述第二线程池的空闲时间,并使所述第一线程池和所述第二线程池分别按照对应的空闲时间回收线程,以使所述第一线程池回收线程的频率低于所述第二线程池回收线程的频率。
9、本专利技术实施例的另一方面,还提供了一种线程池管理的装置,包括:第一模块,用于将线程池初始化为第一线程池和第二线程池;第二模块,用于通过所述第一线程池接收线程申请请求并判断所述第一线程池是否存在空闲的线程或者可创建新线程的空间,以确认是否可以从所述第一线程池中申请所述线程申请请求对应的线程;第三模块,用于响应于确认不可以从所述第一线程池中申请所述线程申请请求对应的线程,判断所述第二线程池中是否存在空闲的线程或者可创建新线程的空间,以确认是否可以从所述第二线程池中申请所述线程申请请求对应的线程;第四模块,用于响应于确认不可以从所述第二线程池中申请所述线程申请请求对应的线程,将所述线程申请请求存放在队列中,并等待所述队列溢出后返回至判断所述第一线程池是否存在空闲的线程或者可创建新线程的空间的步骤。
10、本专利技术实施例的另一方面,还提供了一种电子设备,包括至少一个处理器;以及存储器,存储器存储有可在处理器上运行的计算机指令,指令由处理器执行时实现上述方法的步骤。
11、本专利技术实施例的另一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时实现如上述方法步骤的计算机程序。
12、本专利技术至少具有以下有益效果:本专利技术提供的一种线程池管理的方法,采用线程优先的方式进行线程池管理,抛弃原有基于核心线程和普通线程的队列优先的方式,将线程池初始化为第一线程池和第二线程池。在申请线程时,优先从第一线程池中申请,第一线程池无法满足申请条件后再从第二线程池申请,只有在第二线程池也无法满足申请条件后才将该申请线程的请求存放在队列中,等待队列溢出后申请线程。减少了空闲线程的等待,充分利用线程池资源,动态分配线程池资源,提高了线程池管理的效率。
本文档来自技高网...【技术保护点】
1.一种线程池管理的方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述判断判断所述第一线程池是否存在空闲的线程或者可创建新线程的空间,以确认是否可以从所述第一线程池中申请所述线程申请请求对应的线程的步骤包括:
3.根据权利要求1所述的方法,其特征在于,所述判断所述第二线程池中是否存在空闲的线程或者可创建新线程的空间,以确认是否可以从所述第二线程池中申请所述线程申请请求对应的线程的步骤包括:
4.根据权利要求3所述的方法,其特征在于,所述判断所述第二线程池中是否存在空闲的线程或者可创建新线程的空间,以确认是否可以从所述第二线程池中申请所述线程申请请求对应的线程的步骤还包括:
5.根据权利要求4所述的方法,其特征在于,所述判断所述第二线程池中是否存在空闲的线程或者可创建新线程的空间,以确认是否可以从所述第二线程池中申请所述线程申请请求对应的线程的步骤还包括:
6.根据权利要求1所述的方法,其特征在于,所述将线程池初始化为第一线程池和第二线程池步骤包括:
7.根据权利要求6所述的方法,其特征在
8.一种线程池管理的装置,其特征在于,包括:
9.一种电子设备,其特征在于,包括:
10.一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时实现权利要求1-7任意一项所述方法的步骤的计算机程序。
...【技术特征摘要】
1.一种线程池管理的方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述判断判断所述第一线程池是否存在空闲的线程或者可创建新线程的空间,以确认是否可以从所述第一线程池中申请所述线程申请请求对应的线程的步骤包括:
3.根据权利要求1所述的方法,其特征在于,所述判断所述第二线程池中是否存在空闲的线程或者可创建新线程的空间,以确认是否可以从所述第二线程池中申请所述线程申请请求对应的线程的步骤包括:
4.根据权利要求3所述的方法,其特征在于,所述判断所述第二线程池中是否存在空闲的线程或者可创建新线程的空间,以确认是否可以从所述第二线程池中申请所述线程申请请求对应的线程的步骤还包括:
【专利技术属性】
技术研发人员:田琳,王晓通,
申请(专利权)人:济南浪潮数据技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。