用于控制线程池中线程数量的方法和装置制造方法及图纸

技术编号:16326815 阅读:36 留言:0更新日期:2017-09-29 18:51
本申请公开了用于控制线程池中线程数量的方法和装置。该方法的一具体实施方式包括:获取线程池的任务队列中待处理任务的数量;响应于待处理任务的数量大于第一预定数量且线程池所在系统的CPU使用率小于预定阈值,根据预定规则增大线程池的最大并发线程数;根据增大后的最大并发线程数创建线程。该实施方式提高了线程池的运行效率。

【技术实现步骤摘要】
用于控制线程池中线程数量的方法和装置
本申请涉及计算机
,尤其涉及用于控制线程池中线程数量的方法和装置。
技术介绍
在多进程/多线程的操作系统中,一般将耗时的操作交由一个单独的线程去处理,一方面是为了避免阻塞主线程,不影响用户的正常交互操作,另一方面是为了提高CPU的利用率,提高任务执行的速度。但如果有多个需要处理的耗时任务,同时创建了多个线程,系统CPU的占用率就会很高,这样会导致每个线程处理都很慢,此外,还可能导致设备/系统耗电量增加,因此,需要创建一个线程池(ThreadPool)去控制这些线程,即对创建的线程的数量有所控制。线程池是一种多线程处理形式,处理过程中可以通过线程池分配器(ThreadPoolDispatcher)将待处理任务添加到任务队列,然后在创建线程后自动启动任务队列中的待处理任务。线程池创建后,可以通过最大并发线程数的设置来控制线程的数量,比如设置一个线程池的最大并发线程数是3,那么这个线程池中最多可以创建3个线程去处理任务。现有技术中,线程池创建后,设定的最大并发线程数固定不变。然而,由于任务队列中待处理任务的数量是变化的,所以最大并发线程数固定,可能导致任务队列中待处理任务的数量过多,待处理任务不能及时被执行。
技术实现思路
本申请的目的在于提出一种改进的用于控制线程池中线程数量的方法和装置,来解决以上
技术介绍
部分提到的技术问题。第一方面,本申请提供了一种用于控制线程池中线程数量的方法,该方法包括:获取线程池的任务队列中待处理任务的数量;响应于待处理任务的数量大于第一预定数量且线程池所在系统的CPU使用率小于预定阈值,根据预定规则增大线程池的最大并发线程数;根据增大后的最大并发线程数创建线程。在一些实施例中,方法还包括:响应于待处理任务的数量小于第二预定数量或线程池中存在空闲时长超过预定时长的线程,根据预设规则减少线程池的最大并发线程数,其中,第二预定数量小于第一预定数量;根据减少后的最大并发线程数销毁线程。在一些实施例中,根据预定规则增大线程池的最大并发线程数,包括以下任意一项:将线程池的最大并发线程数增大至线程池的初始最大并发线程数与线程池当前最大并发线程数之和;根据预定时间段内待处理任务增加的数量,确定线程池的最大并发线程数的增加量,将线程池的最大并发线程数增大至增加量与线程池当前最大并发线程数之和。在一些实施例中,根据预设规则减少线程池的最大并发线程数,包括以下任意一项:确定线程池中空闲时长超过预定时长的线程的数量,将线程池的最大并发线程数减少至线程池当前最大并发线程数与确定的数量之差;根据预定时间段内待处理任务减少的数量,确定线程池的最大并发线程数的减少量,将线程池的最大并发线程数减少至线程池当前最大并发线程数与减少量之差。在一些实施例中,获取线程池的任务队列中待处理任务的数量,包括以下任意一项:每隔预设时间段获取线程池的任务队列中待处理任务的数量;响应于预设时长内没有待处理任务加入任务队列,获取任务队列中待处理任务的数量;响应于预置时长内加入任务队列中的待处理任务的数量超过预定数量阈值,获取任务队列中待处理任务的数量。第二方面,本申请提供了一种用于控制线程池中线程数量的装置,该装置包括:获取单元,用于获取线程池的任务队列中待处理任务的数量;增大单元,用于响应于待处理任务的数量大于第一预定数量且线程池所在系统的CPU使用率小于预定阈值,根据预定规则增大线程池的最大并发线程数;创建单元,用于根据增大后的最大并发线程数创建线程。在一些实施例中,装置还包括:减少单元,用于响应于待处理任务的数量小于第二预定数量或线程池中存在空闲时长超过预定时长的线程,根据预设规则减少线程池的最大并发线程数,其中,第二预定数量小于第一预定数量;销毁单元,用于根据减少后的最大并发线程数销毁线程。在一些实施例中,增大单元,进一步配置用于:将线程池的最大并发线程数增大至线程池的初始最大并发线程数与线程池当前最大并发线程数之和;或根据预定时间段内待处理任务增加的数量,确定线程池的最大并发线程数的增加量,将线程池的最大并发线程数增大至增加量与线程池当前最大并发线程数之和。在一些实施例中,减少单元,进一步配置用于:确定线程池中空闲时长超过预定时长的线程的数量,将线程池的最大并发线程数减少至线程池当前最大并发线程数与确定的数量之差;或根据预定时间段内待处理任务减少的数量,确定线程池的最大并发线程数的减少量,将线程池的最大并发线程数减少至线程池当前最大并发线程数与减少量之差。在一些实施例中,获取单元,进一步配置用于:每隔预设时间段获取线程池的任务队列中待处理任务的数量;或响应于预设时长内没有待处理任务加入任务队列,获取任务队列中待处理任务的数量;或响应于预置时长内加入任务队列中的待处理任务的数量超过预定数量阈值,获取任务队列中待处理任务的数量。第三方面,本申请提供了一种设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的方法。第四方面,本申请提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如第一方面所述的方法。本申请提供的用于控制线程池中线程数量的方法和装置,通过获取线程池的任务队列中待处理任务的数量,而后响应于待处理任务的数量大于第一预定数量且线程池所在系统的CPU使用率小于预定阈值,根据预定规则增大线程池的最大并发线程数,最后根据增大后的最大并发线程数创建线程,在同一时间可以处理更多的任务,因此提高了线程池的运行效率。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:图1是本申请可以应用于其中的示例性系统架构图;图2是根据本申请的用于控制线程池中线程数量的方法的一个实施例的示意性流程图;图3是根据本申请的用于控制线程池中线程数量的方法的应用场景的示意图;图4是根据本申请的用于控制线程池中线程数量的方法的又一个实施例的示意性流程图;图5是根据本申请的用于控制线程池中线程数量的装置的一个实施例的示例性结构图;图6是适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。具体实施方式下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关专利技术,而非对该专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关专利技术相关的部分。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。图1示出了可以应用本申请的用于控制线程池中线程数量的方法或用于控制线程池中线程数量的装置的实施例的示例性系统架构100。如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105、106。网络104用以在终端设备101、102、103和服务器105、106之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。用户110可以使用终端设备101、102、103通过网络104与服务器105、106交互,以接收或发送数据等本文档来自技高网...
用于控制线程池中线程数量的方法和装置

【技术保护点】
一种用于控制线程池中线程数量的方法,其特征在于,所述方法包括:获取线程池的任务队列中待处理任务的数量;响应于所述待处理任务的数量大于第一预定数量且所述线程池所在系统的CPU使用率小于预定阈值,根据预定规则增大所述线程池的最大并发线程数;根据增大后的最大并发线程数创建线程。

【技术特征摘要】
1.一种用于控制线程池中线程数量的方法,其特征在于,所述方法包括:获取线程池的任务队列中待处理任务的数量;响应于所述待处理任务的数量大于第一预定数量且所述线程池所在系统的CPU使用率小于预定阈值,根据预定规则增大所述线程池的最大并发线程数;根据增大后的最大并发线程数创建线程。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:响应于所述待处理任务的数量小于第二预定数量或所述线程池中存在空闲时长超过预定时长的线程,根据预设规则减少所述线程池的最大并发线程数,其中,所述第二预定数量小于所述第一预定数量;根据减少后的最大并发线程数销毁线程。3.根据权利要求1所述的方法,其特征在于,所述根据预定规则增大所述线程池的最大并发线程数,包括以下任意一项:将所述线程池的最大并发线程数增大至所述线程池的初始最大并发线程数与所述线程池当前最大并发线程数之和;根据预定时间段内所述待处理任务增加的数量,确定所述线程池的最大并发线程数的增加量,将所述线程池的最大并发线程数增大至所述增加量与所述线程池当前最大并发线程数之和。4.根据权利要求2所述的方法,其特征在于,所述根据预设规则减少所述线程池的最大并发线程数,包括以下任意一项:确定所述线程池中空闲时长超过预定时长的线程的数量,将所述线程池的最大并发线程数减少至所述线程池当前最大并发线程数与确定的数量之差;根据预定时间段内所述待处理任务减少的数量,确定所述线程池的最大并发线程数的减少量,将所述线程池的最大并发线程数减少至所述线程池当前最大并发线程数与所述减少量之差。5.根据权利要求1-4中任一项所述的方法,其特征在于,所述获取线程池的任务队列中待处理任务的数量,包括以下任意一项:每隔预设时间段获取线程池的任务队列中待处理任务的数量;响应于预设时长内没有待处理任务加入所述任务队列,获取所述任务队列中待处理任务的数量;响应于预置时长内加入所述任务队列中的待处理任务的数量超过预定数量阈值,获取所述任务队列中待处理任务的数量。6.一种用于控制线程池中线程数量的装置,其特征在于,所述装置包括:获取单元,用于获取线程池的任务队列中待处理任务的数量;增大单元,用于响应于所述待...

【专利技术属性】
技术研发人员:常先堂简川力赵立峰
申请(专利权)人:百度在线网络技术北京有限公司
类型:发明
国别省市:北京,11

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

1