[发明专利]用于控制线程池中线程数量的方法和装置在审
申请号: | 201710542258.8 | 申请日: | 2017-07-05 |
公开(公告)号: | CN107220033A | 公开(公告)日: | 2017-09-29 |
发明(设计)人: | 常先堂;简川力;赵立峰 | 申请(专利权)人: | 百度在线网络技术(北京)有限公司 |
主分类号: | G06F9/38 | 分类号: | G06F9/38;G06F9/30 |
代理公司: | 北京英赛嘉华知识产权代理有限责任公司11204 | 代理人: | 王达佐,马晓亚 |
地址: | 100085 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 控制 线程 数量 方法 装置 | ||
技术领域
本申请涉及计算机技术领域,尤其涉及用于控制线程池中线程数量的方法和装置。
背景技术
在多进程/多线程的操作系统中,一般将耗时的操作交由一个单独的线程去处理,一方面是为了避免阻塞主线程,不影响用户的正常交互操作,另一方面是为了提高CPU的利用率,提高任务执行的速度。但如果有多个需要处理的耗时任务,同时创建了多个线程,系统CPU的占用率就会很高,这样会导致每个线程处理都很慢,此外,还可能导致设备/系统耗电量增加,因此,需要创建一个线程池(ThreadPool)去控制这些线程,即对创建的线程的数量有所控制。
线程池是一种多线程处理形式,处理过程中可以通过线程池分配器(ThreadPoolDispatcher)将待处理任务添加到任务队列,然后在创建线程后自动启动任务队列中的待处理任务。线程池创建后,可以通过最大并发线程数的设置来控制线程的数量,比如设置一个线程池的最大并发线程数是3,那么这个线程池中最多可以创建3个线程去处理任务。
现有技术中,线程池创建后,设定的最大并发线程数固定不变。然而,由于任务队列中待处理任务的数量是变化的,所以最大并发线程数固定,可能导致任务队列中待处理任务的数量过多,待处理任务不能及时被执行。
发明内容
本申请的目的在于提出一种改进的用于控制线程池中线程数量的方法和装置,来解决以上背景技术部分提到的技术问题。
第一方面,本申请提供了一种用于控制线程池中线程数量的方法,该方法包括:获取线程池的任务队列中待处理任务的数量;响应于待处理任务的数量大于第一预定数量且线程池所在系统的CPU使用率小于预定阈值,根据预定规则增大线程池的最大并发线程数;根据增大后的最大并发线程数创建线程。
在一些实施例中,方法还包括:响应于待处理任务的数量小于第二预定数量或线程池中存在空闲时长超过预定时长的线程,根据预设规则减少线程池的最大并发线程数,其中,第二预定数量小于第一预定数量;根据减少后的最大并发线程数销毁线程。
在一些实施例中,根据预定规则增大线程池的最大并发线程数,包括以下任意一项:将线程池的最大并发线程数增大至线程池的初始最大并发线程数与线程池当前最大并发线程数之和;根据预定时间段内待处理任务增加的数量,确定线程池的最大并发线程数的增加量,将线程池的最大并发线程数增大至增加量与线程池当前最大并发线程数之和。
在一些实施例中,根据预设规则减少线程池的最大并发线程数,包括以下任意一项:确定线程池中空闲时长超过预定时长的线程的数量,将线程池的最大并发线程数减少至线程池当前最大并发线程数与确定的数量之差;根据预定时间段内待处理任务减少的数量,确定线程池的最大并发线程数的减少量,将线程池的最大并发线程数减少至线程池当前最大并发线程数与减少量之差。
在一些实施例中,获取线程池的任务队列中待处理任务的数量,包括以下任意一项:每隔预设时间段获取线程池的任务队列中待处理任务的数量;响应于预设时长内没有待处理任务加入任务队列,获取任务队列中待处理任务的数量;响应于预置时长内加入任务队列中的待处理任务的数量超过预定数量阈值,获取任务队列中待处理任务的数量。
第二方面,本申请提供了一种用于控制线程池中线程数量的装置,该装置包括:获取单元,用于获取线程池的任务队列中待处理任务的数量;增大单元,用于响应于待处理任务的数量大于第一预定数量且线程池所在系统的CPU使用率小于预定阈值,根据预定规则增大线程池的最大并发线程数;创建单元,用于根据增大后的最大并发线程数创建线程。
在一些实施例中,装置还包括:减少单元,用于响应于待处理任务的数量小于第二预定数量或线程池中存在空闲时长超过预定时长的线程,根据预设规则减少线程池的最大并发线程数,其中,第二预定数量小于第一预定数量;销毁单元,用于根据减少后的最大并发线程数销毁线程。
在一些实施例中,增大单元,进一步配置用于:将线程池的最大并发线程数增大至线程池的初始最大并发线程数与线程池当前最大并发线程数之和;或根据预定时间段内待处理任务增加的数量,确定线程池的最大并发线程数的增加量,将线程池的最大并发线程数增大至增加量与线程池当前最大并发线程数之和。
在一些实施例中,减少单元,进一步配置用于:确定线程池中空闲时长超过预定时长的线程的数量,将线程池的最大并发线程数减少至线程池当前最大并发线程数与确定的数量之差;或根据预定时间段内待处理任务减少的数量,确定线程池的最大并发线程数的减少量,将线程池的最大并发线程数减少至线程池当前最大并发线程数与减少量之差。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于百度在线网络技术(北京)有限公司,未经百度在线网络技术(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710542258.8/2.html,转载请声明来源钻瓜专利网。