一种基于线程池的任务分配方法及装置制造方法及图纸

技术编号:13980992 阅读:60 留言:0更新日期:2016-11-12 11:26
本发明专利技术公开了一种基于线程池的任务分配方法及装置,涉及计算机应用技术领域,所述方法包括:获取任务对应的线程分配请求;根据所述线程分配请求中的任务标识确定所述任务对应的线程任务管理单元;根据所述线程线程任务管理单元中线程池中可调用的线程的数量,从线程池中调用线程分配给所述任务。本发明专利技术实施例中,利用线程任务管理单元更准确的为任务分配线程,并根据每一个线程任务管理单元中的线程池中可调用的线程的数量为任务分配线程,能够有效的为任务分配线程,提高了任务分配的效率以及准确率。

【技术实现步骤摘要】

本专利技术涉及计算机应用
,尤其涉及一种基于线程池的任务分配方法及装置
技术介绍
在计算机相关领域当中,线程池是一种非常重要的多线程并发执行的技术。线程池采用预创建的技术,在应用程序启动之后,立即创建一定数目的线程,放入空闲队列中。这些线程都是处于阻塞(挂起)状态,不消耗中央处理器资源,只占用较小的内存空间。当任务到来后,缓冲池选择一个空闲线程,把任务传入此线程中运行。当线程池中的线程都在处理任务,线程池自动创建一定数量的新线程,用于处理更多的任务。在任务执行完毕后线程也不退出,而是继续保持在线程池中等待下一次的任务。但是线程池所允许的并发线程是有上限的,如果同时需要并发的线程数超过上限,那么一部分线程将会等待。如果出现正在执行的线程任务非常耗时或者由于程序漏洞等其他原因,没有及时的释放,导致线程池中的所有线程被使用完,这就会出现之后所有的任务都无法再执行,导致整个应用程序的瘫痪。现有技术中,当线程池线程增加到最大的线程数量后,后续的线程需要处理,一般是按照以下两种方式处理:第一种是不执行新任务,直接返回失败;第二种是让任务等待,等待线程池中有可使用线程时再执行。但是利用现有技术,第一种方法会导致新的任务请求都无法处理,而第二种方法方法容易造成任务的时延;综上所述,现有技术中的基于线程池的任务分配方法性能差,效率低。
技术实现思路
本专利技术提供一种基于线程池的任务分配方法及装置,用于解决现有技术中的基于线程池的任务分配方法性能差,效率低的问题。本专利技术实施例提供一种基于线程池的任务分配方法,所述方法包括:获取任务对应的线程分配请求;根据所述线程分配请求中的任务标识确定所述任务对应的线程线程任务管理单元;根据所述线程线程任务管理单元中可调用的线程的数量,从线程池中调用线程分配给所述任务;其中,所述可调用的线程的数量为线程任务管理单元可以从线程池中调用的线程数量。本专利技术实施例中,获取任务对应的线程分配请求,并根据所述线程分配请求中的任务标识确定所述任务对应的线程任务管理单元,在确定了任务对应的线程任务管理单元后,根据线程任务管理单元中线程池可调用的线程的数量为任务分配线程进行处理,利用不同的线程任务管理单元能够更准确的为任务分配线程,并根据每一个线程任务管理单元中的可调用的线程的数量为在所述任务管理单元中的任务分配线程,提高了为任务分配的效率以及准确率。进一步地,所述根据下列方式确定所述线程线程任务管理单元中可调用的线程的数量:根据所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务的私有线程数量最大值、所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务以及其它线程任务管理单元对应的任务的共享线程数量最大值、所述线程任务管理单元中私有线程数量计数器的计数值以及所述共享线程数量计数器的计数值,确定所述线程线程任务管理单元中可调用的线程的数量。本专利技术实施例中,根据每个线程任务管理单元中的私有线程数量最大值、共享线程数量最大值、私有线程数量计数器的计数值以及共享线程数量计数器的计数值确定所述线程线程任务管理单元中可调用的线程的数量,能够有效的统计该线程任务管理单元中是否还有可利用的线程,更好的为该线程任务管理单元中的任务分配线程。进一步地,所述根据所述线程线程任务管理单元中可调用的线程的数量,从线程池中调用线程分配给所述任务,包括:判断所述线程任务管理单元中的私有线程数量计数器的计数值是否小于所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务的私有线程数量最大值;若所述线程任务管理单元中的私有线程数量计数器的计数值小于所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务的私有线程数量最大值,则在线程池中选择一个线程作为所述任务的分配线程。本专利技术实施例中,所述线程任务管理单元中的私有线程数量计数器的计数值小于所述线程任务管理单元的私有线程数量最大值时,则认为还可以从该组的私有线程数量中增加数量,即从线程池中选择一个线程分配给任务。进一步地,所述根据所述线程线程任务管理单元中可调用的线程的数量,从线程池中调用线程分配给所述任务,包括:若确定所述线程任务管理单元中的私有线程数量计数器的计数值不小于所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务的私有线程数量最大值,则判断所述线程任务管理单元中的私有线程数量计数器的计数值与所述线程任务管理单元中共享线程数量计数器的计数值之和是否小于所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务的私有线程数量最大值以及所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务以及其它线程任务管理单元对应的任务的共享线程数量最大值之和;若所述线程任务管理单元中的私有线程数量计数器的计数值与所述线程任务管理单元中共享线程数量计数器的计数值之和小于所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务的私有线程数量最大值以及所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务以及其它线程任务管理单元对应的任务的共享线程数量最大值之和,则在线程池中选择一个线程作为所述任务的分配线程。本专利技术实施例中,若所述线程任务管理单元中的私有线程数量计数器的计数值不小于所述线程任务管理单元的私有线程数量最大值,并且所述线程任务管理单元中的私有线程数量计数器的计数值与所述线程任务管理单元中共享线程数量计数器的计数值之和小于所述线程任务管理单元中的私有线程数量最大值与所述共享线程数量最大值之和,则认为还可以从该线程任务管理单元中调用线程池中的线程,即从线程池中选择一个线程分配给任务。进一步地,所述根据所述线程线程任务管理单元中可调用的线程的数量,从线程池中调用线程分配给所述任务后,还包括:更新所述线程任务管理单元中的私有线程数量计数器的计数值。本专利技术实施例中,在线程任务管理单元从线程池中调用了线程后,需要更新所述线程任务管理单元中的私有线程数量计数器的计数值,更准确的为下一个对应于该线程任务管理单元中的任务分配线程。进一步地,所述方法还包括:若所述线程任务管理单元中的私有线程数量计数器的计数值与所述线程任务管理单元中共享线程数量计数器的计数值之和不小于所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务的私有线程数量最大值以及所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务以及其它线程任务管理单元对应的任务的共享线程数量最大值之和,则根据查找共享线程任务管理单元条件查找满足条件的其它线程任务管理单元,查找与所述查找共享线程条件对应的其它线程任务管理单元,并利用所述线程任务管理单元在所述线程池中选择一个线程作为所述任务的分配线程;其中,所述查找共享线程条件为所述线程任务管理单元的共享线程数量计数器的计数值小于所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务以及其它线程任务管理单元对应的任务的共享线程数量最大值,且所述线程任务管理单元中私有线程数量计数器的计数值与所述线程任务管理单元中共享线程数量计数器的计数值之和小于所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务的私有线程数量最大值以及所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务以及其它线程任务管理单元对应的任务的本文档来自技高网...

【技术保护点】
一种基于线程池的任务分配方法,其特征在于,所述方法包括:获取任务对应的线程分配请求;根据所述线程分配请求中的任务标识确定所述任务对应的线程线程任务管理单元;根据所述线程线程任务管理单元中可调用的线程的数量,从线程池中调用线程分配给所述任务;其中,所述可调用的线程的数量为线程任务管理单元可以从线程池中调用的线程数量。

【技术特征摘要】
1.一种基于线程池的任务分配方法,其特征在于,所述方法包括:获取任务对应的线程分配请求;根据所述线程分配请求中的任务标识确定所述任务对应的线程线程任务管理单元;根据所述线程线程任务管理单元中可调用的线程的数量,从线程池中调用线程分配给所述任务;其中,所述可调用的线程的数量为线程任务管理单元可以从线程池中调用的线程数量。2.根据权利要求1所述的方法,其特征在于,所述根据下列方式确定所述线程线程任务管理单元中可调用的线程的数量:根据所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务的私有线程数量最大值、所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务以及其它线程任务管理单元对应的任务的共享线程数量最大值、所述线程任务管理单元中私有线程数量计数器的计数值以及所述共享线程数量计数器的计数值,确定所述线程线程任务管理单元中可调用的线程的数量。3.根据权利要求2所述的方法,其特征在于,所述根据所述线程线程任务管理单元中可调用的线程的数量,从线程池中调用线程分配给所述任务,包括:判断所述线程任务管理单元中的私有线程数量计数器的计数值是否小于所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务的私有线程数量最大值;若所述线程任务管理单元中的私有线程数量计数器的计数值小于所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务的私有线程数量最大值,则在线程池中选择一个线程作为所述任务的分配线程。4.根据权利要求3所述的方法,其特征在于,所述根据所述线程线程任务管理单元中可调用的线程的数量,从线程池中调用线程分配给所述任务,包括:若确定所述线程任务管理单元中的私有线程数量计数器的计数值不小于所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务的私有线程数量最大值,则判断所述线程任务管理单元中的私有线程数量计数器的计数值与所述线程任务管理单元中共享线程数量计数器的计数值之和是否小于所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务的私有线程数量最大值以及所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务以及其它线程任务管理单元对应的任务的共享线程数量最大值之和;若所述线程任务管理单元中的私有线程数量计数器的计数值与所述线程任务管理单元中共享线程数量计数器的计数值之和小于所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务的私有线程数量最大值以及所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务以及其它线程任务管理单元对应的任务的共享线程数量最大值之和,则在线程池中选择一个线程作为所述任务的分配线程。5.根据权利要求3或4所述的方法,其特征在于,所述根据所述线程线程任务管理单元中可调用的线程的数量,从线程池中调用线程分配给所述任务后,还包括:更新所述线程任务管理单元中的私有线程数量计数器的计数值。6.根据权利要求4所述的方法,其特征在于,所述方法还包括:若所述线程任务管理单元中的私有线程数量计数器的计数值与所述线程任务管理单元中共享线程数量计数器的计数值之和不小于所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务的私有线程数量最大值以及所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务以及其它线程任务管理单元对应的任务的共享线程数量最大值之和,则根据查找共享线程任务管理单元条件查找满足条件的其它线程任务管理单元,查找与所述查找共享线程条件对应的其它线程任务管理单元,并利用所述线程任务管理单元在所述线程池中选择一个线程作为所述任务的分配线程;其中,所述查找共享线程条件为所述线程任务管理单元的共享线程数量计数器的计数值小于所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务以及其它线程任务管理单元对应的任务的共享线程数量最大值,且所述线程任务管理单元中私有线程数量计数器的计数值与所述线程任务管理单元中共享线程数量计数器的计数值之和小于所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务的私有线程数量最大值以及所述线程任务管理单元中可分配给所...

【专利技术属性】
技术研发人员:赵建霖王涛李关乐
申请(专利权)人:联动优势科技有限公司
类型:发明
国别省市:北京;11

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

1