【技术实现步骤摘要】
一种调整线程数的方法及装置
本申请涉及计算机
,尤其涉及一种调整线程数的方法及装置。
技术介绍
目前,针对多任务同时处理可采用线程池技术,在同一时刻利用不同线程处理不同任务,达到同时处理多个任务的目的。采用线程池技术,在初始化时可在线程池中创建多个线程和一个任务队列,当有多个任务需要执行时,会将多个任务推入到任务队列中,并从线程池中选择多个空闲的线程分别执行多个任务,当该多个任务执行完毕后,将执行该多个任务的多个线程的状态置为空闲,并将该多个线程再放入线程池中,以使其可以被派发执行新的任务。现有技术中,线程池初始化之后创建的线程数量是固定值。当任务队列中任务较少,线程池中存在较多空闲线程时,会导致线程资源的浪费,反之,当任务队列中任务较多,线程池中空闲线程不足时,又会导致任务处理速度变慢。
技术实现思路
本申请实施例提供一种调整线程数的方法及装置,用以实现根据任务数量对线程数量的动态调整,以达到快速处理任务和节省资源之间的动态平衡。第一方面,本申请实施例提供一种调整线程数的方法,该方法包括:采集第一数量和第二数量,第一数量为线程池的任务队列中任务的数量,第二数量为线程池中线程的数量,线程用于处理任务,在采集到第一数量和第二数量之后,可根据第一数量和第二数量确定线程池的状态,该状态包括空闲状态或繁忙状态,空闲状态为第一数量小于第二数量的状态,繁忙状态为第一数量大于第二数量的状态,若确定线程池的状态为繁忙状态,则增加线程池中线程的数量,若确定线程池的状态为空闲状态,则减少线程池中线程的数量。通过上述方法,可根据线程池中任务数量和线程数量确定线程池的状态,进而 ...
【技术保护点】
1.一种调整线程数的方法,其特征在于,包括:采集第一数量和第二数量,所述第一数量为线程池的任务队列中任务的数量,所述第二数量为所述线程池中线程的数量,所述线程用于处理所述任务;根据所述第一数量和所述第二数量,确定所述线程池的状态,所述状态包括空闲状态或繁忙状态,所述空闲状态为所述第一数量小于所述第二数量的状态,所述繁忙状态为所述第一数量大于所述第二数量的状态;若确定所述线程池的状态为繁忙状态,则增加所述线程池中线程的数量;若确定所述线程池的状态为空闲状态,则减少所述线程池中线程的数量。
【技术特征摘要】
1.一种调整线程数的方法,其特征在于,包括:采集第一数量和第二数量,所述第一数量为线程池的任务队列中任务的数量,所述第二数量为所述线程池中线程的数量,所述线程用于处理所述任务;根据所述第一数量和所述第二数量,确定所述线程池的状态,所述状态包括空闲状态或繁忙状态,所述空闲状态为所述第一数量小于所述第二数量的状态,所述繁忙状态为所述第一数量大于所述第二数量的状态;若确定所述线程池的状态为繁忙状态,则增加所述线程池中线程的数量;若确定所述线程池的状态为空闲状态,则减少所述线程池中线程的数量。2.如权利要求1所述的方法,其特征在于,根据所述第一数量和所述第二数量,确定所述线程池的状态,包括:若所述第一数量和所述第二数量的比值小于第一预设值,则确定所述线程池的状态为所述空闲状态;若所述第一数量和所述第二数量的比值大于第二预设值,则确定所述线程池的状态为所述繁忙状态;其中,所述第一预设值为小于或等于1的正数,所述第二预设值为大于或等于1的正数。3.如权利要求2所述的方法,其特征在于,所述繁忙状态包括一级繁忙状态、二级繁忙状态以及三级繁忙状态;若所述第一数量和所述第二数量的比值大于第二预设值,则确定所述线程池的状态为所述繁忙状态,包括:若所述比值大于所述第二预设值且小于第三预设值,则确定所述线程池的状态为所述一级繁忙状态;若所述比值大于等于所述第三预设值且小于第四预设值,则确定所述线程池的状态为所述二级繁忙状态;若所述比值大于或等于所述第四预设值,则确定所述线程池的状态为所述三级繁忙状态;其中,所述第三预设值为大于所述第二预设值的正数,所述第四预设值为大于所述第三预设值的正数。4.如权利要求3所述的方法,其特征在于,所述第一数量和所述第二数量按周期采集,针对每个所述周期确定所述线程池的状态,所述状态与积分数值具备对应关系,所述一级繁忙状态、所述二级繁忙状态以及所述三级繁忙状态对应的积分数值为正数,所述空闲状态对应的积分数值为负数;针对当前周期确定所述线程池的状态之后,还包括:根据所述对应关系,以及针对当前周期确定的所述线程池的状态,确定与所述线程池的状态对应的第一积分数值;将所述第一积分数值和历史积分数值之和,确定为与针对当前周期确定的所述线程池的状态对应的第二积分数值,所述历史积分数值是指针对当前周期之前的每个周期确定的与所述线程池的状态对应的积分数值之和;若确定所述线程池的状态为繁忙状态,则增加所述线程池中线程的数量,包括:若所述第二积分数值大于或等于第五预设值,则在所述线程池中增加第一预设数量个线程;若确定所述线程池的状态为空闲状态,则减少所述线程池中线程的数量,包括:若所述第二积分数值小于或等于第六预设值,则减少所述线程池中第二预设数量个线程,所述第五预设值为正数,所述第六预设值为负数。5.如权利要求4所述的方法,其特征在于,所述第一预设数量和所述第二预设数量均为一。6.如权利要求4或5所述的方法,其特征在于,还包括:若确定所述第一积分数值为正数,且所述历史积分数值为负数,则将所述历史积分数值置零;或者,若确定所述第一积分数值为负数,且所述历史积分数值为正数,则将所述历史积分数值置零;或者,若确定所述历史积分数值大于或等于所述第五预设值,则将所述历史积分数值置零;或者,若确定所述历史积分数值小于或等于所述第六预设值,则将所述历史积分数值置零;或者,若确定所述第二积分数值大于或等于所述第五预设值,且当前所述线程池中的线程数量等于预设的最大线程数量,则将所述当前状态对应的所述第二积分数值置零;或者,若确定所述第二积分数值小于或等于所述第六预设值,且当前所述线程池中的线程数量等于预设的最小线程数量,则将所述当前状态对应的所述第二积分数值置零。7...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。