【技术实现步骤摘要】
本专利技术涉及计算机应用
,尤其涉及一种基于线程池的任务分配方法及装置。
技术介绍
在计算机相关领域当中,线程池是一种非常重要的多线程并发执行的技术。线程池采用预创建的技术,在应用程序启动之后,立即创建一定数目的线程,放入空闲队列中。这些线程都是处于阻塞(挂起)状态,不消耗中央处理器资源,只占用较小的内存空间。当任务到来后,缓冲池选择一个空闲线程,把任务传入此线程中运行。当线程池中的线程都在处理任务,线程池自动创建一定数量的新线程,用于处理更多的任务。在任务执行完毕后线程也不退出,而是继续保持在线程池中等待下一次的任务。但是线程池所允许的并发线程是有上限的,如果同时需要并发的线程数超过上限,那么一部分线程将会等待。如果出现正在执行的线程任务非常耗时或者由于程序漏洞等其他原因,没有及时的释放,导致线程池中的所有线程被使用完,这就会出现之后所有的任务都无法再执行,导致整个应用程序的瘫痪。现有技术中,当线程池线程增加到最大的线程数量后,后续的线程需要处理,一般是按照以下两种方式处理:第一种是不执行新任务,直接返回失败;第二种是让任务等待,等待线程池中有可使用线程时再执行。但是利用现有技术,第一种方法会导致新的任务请求都无法处理,而第二种方法方法容易造成任务的时延;综上所述,现有技术中的基于线程池的任务分配方法性能差,效率低。
技术实现思路
本专利技术提供一种基于线程池的任务分配方法及装置,用于解决现有技术中的基于线程池的任务分配方法性能差,效率低的问题。本专利技术实施例提供一种基于线程池的任务分配方法,所述方法包括:获取任务对应的线程分配请求;根据所述线程分 ...
【技术保护点】
一种基于线程池的任务分配方法,其特征在于,所述方法包括:获取任务对应的线程分配请求;根据所述线程分配请求中的任务标识确定所述任务对应的线程线程任务管理单元;根据所述线程线程任务管理单元中可调用的线程的数量,从线程池中调用线程分配给所述任务;其中,所述可调用的线程的数量为线程任务管理单元可以从线程池中调用的线程数量。
【技术特征摘要】
1.一种基于线程池的任务分配方法,其特征在于,所述方法包括:获取任务对应的线程分配请求;根据所述线程分配请求中的任务标识确定所述任务对应的线程线程任务管理单元;根据所述线程线程任务管理单元中可调用的线程的数量,从线程池中调用线程分配给所述任务;其中,所述可调用的线程的数量为线程任务管理单元可以从线程池中调用的线程数量。2.根据权利要求1所述的方法,其特征在于,所述根据下列方式确定所述线程线程任务管理单元中可调用的线程的数量:根据所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务的私有线程数量最大值、所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务以及其它线程任务管理单元对应的任务的共享线程数量最大值、所述线程任务管理单元中私有线程数量计数器的计数值以及所述共享线程数量计数器的计数值,确定所述线程线程任务管理单元中可调用的线程的数量。3.根据权利要求2所述的方法,其特征在于,所述根据所述线程线程任务管理单元中可调用的线程的数量,从线程池中调用线程分配给所述任务,包括:判断所述线程任务管理单元中的私有线程数量计数器的计数值是否小于所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务的私有线程数量最大值;若所述线程任务管理单元中的私有线程数量计数器的计数值小于所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务的私有线程数量最大值,则在线程池中选择一个线程作为所述任务的分配线程。4.根据权利要求3所述的方法,其特征在于,所述根据所述线程线程任务管理单元中可调用的线程的数量,从线程池中调用线程分配给所述任务,包括:若确定所述线程任务管理单元中的私有线程数量计数器的计数值不小于所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务的私有线程数量最大值,则判断所述线程任务管理单元中的私有线程数量计数器的计数值与所述线程任务管理单元中共享线程数量计数器的计数值之和是否小于所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务的私有线程数量最大值以及所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务以及其它线程任务管理单元对应的任务的共享线程数量最大值之和;若所述线程任务管理单元中的私有线程数量计数器的计数值与所述线程任务管理单元中共享线程数量计数器的计数值之和小于所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务的私有线程数量最大值以及所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务以及其它线程任务管理单元对应的任务的共享线程数量最大值之和,则在线程池中选择一个线程作为所述任务的分配线程。5.根据权利要求3或4所述的方法,其特征在于,所述根据所述线程线程任务管理单元中可调用的线程的数量,从线程池中调用线程分配给所述任务后,还包括:更新所述线程任务管理单元中的私有线程数量计数器的计数值。6.根据权利要求4所述的方法,其特征在于,所述方法还包括:若所述线程任务管理单元中的私有线程数量计数器的计数值与所述线程任务管理单元中共享线程数量计数器的计数值之和不小于所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务的私有线程数量最大值以及所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务以及其它线程任务管理单元对应的任务的共享线程数量最大值之和,则根据查找共享线程任务管理单元条件查找满足条件的其它线程任务管理单元,查找与所述查找共享线程条件对应的其它线程任务管理单元,并利用所述线程任务管理单元在所述线程池中选择一个线程作为所述任务的分配线程;其中,所述查找共享线程条件为所述线程任务管理单元的共享线程数量计数器的计数值小于所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务以及其它线程任务管理单元对应的任务的共享线程数量最大值,且所述线程任务管理单元中私有线程数量计数器的计数值与所述线程任务管理单元中共享线程数量计数器的计数值之和小于所述线程任务管理单元中可分配给所述线程任务管理单元对应的任务的私有线程数量最大值以及所述线程任务管理单元中可分配给所...
【专利技术属性】
技术研发人员:赵建霖,王涛,李关乐,
申请(专利权)人:联动优势科技有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。