System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及数据处理领域,具体而言,涉及一种线程调拨处理方法及装置。
技术介绍
1、对于单个或多个线程共用一个队列的线程池,不同类型的任务会分配给相对空闲的线程进行处理。比如java中使用excutors工具类中的方法创建线程池实例。若a任务的耗时长,b任务的耗时短,当a任务数较多,b任务数较少时,线程会被a任务大量占用,而b任务只能等a任务处理完成后才能得到处理,导致b任务不能尽快得到处理。这样a任务会干扰b任务。无法防止不同任务间互相干扰。
2、针对相关技术中对于单个或多个线程共用一个队列的线程池,不同类型的任务分配给相对空闲的线程进行处理,无法防止不同类型的任务间互相干扰的问题,尚未提出解决方案。
技术实现思路
1、本专利技术实施例提供了一种线程调拨处理方法及装置,以至少解决相关技术中对于单个或多个线程共用一个队列的线程池,不同类型的任务会分配给相对空闲的线程进行处理,无法防止不同类型的任务间互相干扰的问题。
2、根据本专利技术的一个实施例,提供了一种线程调拨处理方法,所述方法包括:
3、为任务创建多个分组,并为每个分组创建对应的任务队列;
4、确定所述多个分组的所需线程数;
5、根据所述多个分组的所需线程数,从预先创建的默认分组中统一调拨线程给所述多个分组,或从所述多个分组将线程统一调拨回默认分组。
6、可选地,确定所述多个分组的所需线程数包括:配置所述多个分组的所需线程数;或者根据实际需求确定所述多
7、可选地,根据所述多个分组的所需线程数,从预先创建的默认分组中统一调拨线程给所述多个分组,或从所述多个分组将线程统一调拨回默认分组,包括:若所述多个分组的所需线程数与所述多个分组的实际拥有的线程数不一致,生成队列切换任务,并将所述队列切换任务放入需调出线程的分组队列中,通过所述队列切换任务调拨所述多个分组的线程,其中,所述队列切换任务包含目标分组的信息,所述队列切换任务的优先级高于所有业务级任务,放入所述任务队列后会排在所述任务队列的最前面;若所述多个分组中的第一目标分组的所需线程数大于所述第一目标分组所拥有的线程数,则将队列切换任务放入默认分组的队列中,将所述默认分组中的线程调拨给所述第一目标分组;若所述第一目标分组的所需线程数小于所述第一目标分组拥有的线程数,则将队列切换任务放入所述目标分组的队列中,将所述第一目标分组的队列的线程调拨回所述默认分组。
8、可选地,通过所述队列切换任务调拨所述多个分组的线程,包括:通过所述任务处理器读取到所述队列切换任务,得到所述第二目标分组的信息;通过所述任务处理器,基于读取到的所述队列切换任务中所述第二目标分组的信息将当前处理线程切换到所述第二目标分组的任务队列。
9、可选地,所述方法还包括:创建所述默认分组;将创建的所有线程全部分配给所述默认分组;所述默认分组用于为所述多个分组分摊部分负载。
10、可选地,所述方法还包括:为不确定流量的分组,从默认分组调拨预设数量的线程。
11、可选地,所述方法还包括:若检测到目标分组中待处理任务的增长率大于预设阈值,将所述目标分组中需分配的部分任务分配给所述默认分组处理。
12、可选地,在为任务创建多个分组,并为每个分组创建对应的任务队列之后,所述方法还包括:将所述任务存放到对应分组的任务队列中;针对所述多个分组中各个分组的任务队列中的任务,按照优先级排序,并将优先级高的任务排在所述任务队列的前面,优先级低的任务排在所述任务队列的后面,其中,相同优先级的任务,先存放的任务排在所述任务队列的前面,后存放的任务排在所述任务队列的后面。
13、可选地,为任务创建多个分组包括:按照任务类型将所述任务进行分组,得到所述多个分组;按任务来源将所述任务进行分组,得到所述多个分组;按任务目标将所述任务进行分组,得到所述多个分组;按任务处理耗时长短将所述任务进行分组,得到所述多个分组。
14、根据本专利技术的另一个实施例,还提供了一种线程调拨处理装置,所述装置包括:
15、创建模块,用于为任务创建多个分组,并为每个分组创建对应的任务队列;
16、线程数确定模块,用于确定所述多个分组的所需线程数;
17、调拨模块,用于根据所述多个分组的所需线程数,从预先创建的默认分组中统一调拨线程给所述多个分组,或从所述多个分组将线程统一调拨回默认分组。
18、可选地,所述线程数确定模块,还用于配置所述多个分组的所需线程数;或者根据实际需求确定所述多个分组的所需线程数。
19、可选地,所述调拨模块包括:
20、第一调拨子模块,用于在所述多个分组的所需线程数与其实际拥有的线程数不一致时,生成队列切换任务,并将所述队列切换任务放入需调出线程的分组队列中,通过所述队列切换任务调拨所述多个分组的线程,其中,所述队列切换任务包含目标分组的信息,所述队列切换任务的优先级高于所有业务级任务,放入所述任务队列后会排在所述任务队列的最前面;
21、第二调拨子模块,用于若所述多个分组中的第一目标分组的所需线程数大于所述第一目标分组所拥有的线程数,则将队列切换任务放入默认分组的队列中,将所述默认分组中的线程调拨给所述第一目标分组;若所述第一目标分组的所需线程数小于所述第一目标分组拥有的线程数,则将队列切换任务放入所述目标分组的队列中,将所述第一目标分组的队列的线程调拨回所述默认分组。
22、可选地,所述第一调拨子模块,还用于通过所述任务处理器读取到所述队列切换任务,得到所述队列切换任务中第二目标分组的信息;通过所述任务处理器,基于读取到的所述队列切换任务中所述第二目标分组的信息将当前处理线程切换到所述第二目标分组的任务队列。
23、可选地,所述装置还包括:
24、创建模块,用于创建所述默认分组;将创建的所有线程全部分配给所述默认分组,所述默认分组用于为所述多个分组分摊部分负载。
25、可选地,所述装置还包括:
26、第三调拨子模块,用于为不确定流量的分组,从默认分组调拨预设数量的线程。
27、可选地,所述装置还包括:
28、分配模块,用于若检测到目标分组中待处理任务的增长率大于预设阈值,将所述目标分组中需分配的部分任务分配给所述默认分组处理。
29、可选地,所述装置还包括:
30、存放模块,用于将所述任务存放到对应分组的任务队列中;
31、排序模块,用于针对所述多个分组中每个分组的任务队列中的任务,按照优先级排序,并将优先级高的任务排在所述任务队列的前面,优先级低的任务排在所述任务队列的后面,其中,相同优先级的任务,先存放的任务排在所述任务队列的前面,后存放的任务排在所述任务队列的后面。
32、可选地,所述分组模块,还用于按照任务类型将所述任务进行分组,得到所述多个分组;按任务来源将所述任务进行分本文档来自技高网...
【技术保护点】
1.一种线程调拨处理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,确定所述多个分组的所需线程数包括:
3.根据权利要求1所述的方法,其特征在于,根据所述多个分组的所需线程数,从预先创建的默认分组中统一调拨线程给所述多个分组,或从所述多个分组将线程统一调拨回默认分组,包括:
4.根据权利要求3所述的方法,其特征在于,通过所述队列切换任务调拨所述多个分组的线程包括:
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
8.根据权利要求1所述的方法,其特征在于,在为任务创建多个分组,并为每个分组创建对应的任务队列之后,所述方法还包括:
9.根据权利要求1至8中任一项所述的方法,其特征在于,为任务创建多个分组包括:
10.一种线程调拨处理装置,其特征在于,所述装置包括:
11.一种计算机可读的存储介质,其特征在于,
12.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至9中任一项所述的方法。
...【技术特征摘要】
1.一种线程调拨处理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,确定所述多个分组的所需线程数包括:
3.根据权利要求1所述的方法,其特征在于,根据所述多个分组的所需线程数,从预先创建的默认分组中统一调拨线程给所述多个分组,或从所述多个分组将线程统一调拨回默认分组,包括:
4.根据权利要求3所述的方法,其特征在于,通过所述队列切换任务调拨所述多个分组的线程包括:
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
7.根据权利要求5所述的方法,其特征在于,所述方法还...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。