System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及通信,特别是涉及一种线程池管理方法及系统。
技术介绍
1、随着计算机行业和物联网的飞速发展,系统接入的物联网设备数据越来越多,服务器的数据处理压力越来大,开发人员必须利用多线程来不断地提高服务器的处理能力。
2、传统的java线程池,其多个线程共用一个任务等待队列,其无法保证同一物联网设备数据处理的时序性问题,即对同一物联网设备的a任务及b任务,需依照时间顺序分先后进行处理时,两个线程会同时分别处理a任务及b任务,导致a任务与b任务同时被处理完成,或b任务比a任务更快被处理完成的情况发生。
3、现一般为每一线程单独配置一个任务队列,以解决同一物联网设备数据处理的时序性问题,但不同的任务队列内待处理的任务数量不一致,导致不同的线程池对任务的处理效率不一致,降低了资源的有效利用率。
技术实现思路
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、持续检测若干个所述任务队列中的任务数量是否为空;
33、若某一所述任务队列中的任务数量为空,则将该所述任务队列标记为观测队列;
34、获取所述观测队列的空置时间,并判断所述空置时间是否超过预设时间;
35、若所述空置时间超过所述预设时间,则将所述观测队列确定为空置队列,并将所述空置队列的初始哈希范围拼接至与其相邻的下一所述任务队列的初始哈希范围。
36、第二方面,本申请实施例提供了一种线程池管理系统,应用于如上述技术方案中的线程池管理方法,所述系统包括:
37、构建模块,用于构建与若干个线程一一对应的若干个任务队列,基于所述线程的数量为所述任务队列分配初始哈希范围;
38、第一分配模块,用于获取待处理任务,计算所述待处理任务的哈希值,基于所述哈希值与所述初始哈希范围自若干个所述任务队列中确定分配队列;
39、第一分析模块,用于判断所述分配队列的的负载系数是否超过负载阈值;
40、第二分析模块,用于若所述分配队列的负载系数超过所述负载阈值,则判断与所述分配队列相邻的第一任务队列及第二任务队列的负载系数是否超过负载阈值;
41、调节模块,用于若所述第一任务队列及所述第二任务队列的负载系数均未超过所述负载阈值,则对所述分配队列、所述第一任务队列及所述第二任务队列的初始哈希范围进行调整,以分别获取所述分配队列、所述第一任务队列及所述第二任务队列的更新哈希范围;
42、第二分配模块,用于将所述哈希值与所述更新哈希范围进行比对,以自所述分配队列、所述第一任务队列及本文档来自技高网...
【技术保护点】
1.一种线程池管理方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的线程池管理方法,其特征在于,所述计算所述待处理任务的哈希值的步骤包括:
3.根据权利要求2所述的线程池管理方法,其特征在于,所述哈希值的计算公式为:
4.根据权利要求1所述的线程池管理方法,其特征在于,所述负载系数的计算公式为:
5.根据权利要求1所述的线程池管理方法,其特征在于,所述则对所述分配队列、所述第一任务队列及所述第二任务队列的初始哈希范围进行调整,以分别获取所述分配队列、所述第一任务队列及所述第二任务队列的更新哈希范围的步骤包括:
6.根据权利要求1所述的线程池管理方法,其特征在于,在所述若所述分配队列的负载系数超过所述负载阈值,则判断与所述分配队列相邻的第一任务队列及第二任务队列的负载系数是否超过负载阈值的步骤之后,还包括:
7.根据权利要求6所述的线程池管理方法,其特征在于,所述则对所述分配队列进行扩容处理,以将所述分配队列切分为第一子队列及第二子队列,并自所述第一子队列及所述第二子队列中确定第二终选队列的步骤具体为:
8.根据权利要求1所述的线程池管理方法,其特征在于,在所述将所述哈希值与所述更新哈希范围进行比对,以自所述分配队列、所述第一任务队列及所述第二任务队列中确定第一终选队列,并将所述待处理任务分配至所述第一终选队列的步骤之后,还包括:
9.根据权利要求8所述的线程池管理方法,其特征在于,所述检测若干个所述任务队列中是否存在空置队列,若存在空置队列,则对所述空置队列进行回收处理的步骤包括:
10.一种线程池管理系统,应用于如权利要求1~9任一项所述的线程池管理方法,其特征在于,所述系统包括:
...【技术特征摘要】
1.一种线程池管理方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的线程池管理方法,其特征在于,所述计算所述待处理任务的哈希值的步骤包括:
3.根据权利要求2所述的线程池管理方法,其特征在于,所述哈希值的计算公式为:
4.根据权利要求1所述的线程池管理方法,其特征在于,所述负载系数的计算公式为:
5.根据权利要求1所述的线程池管理方法,其特征在于,所述则对所述分配队列、所述第一任务队列及所述第二任务队列的初始哈希范围进行调整,以分别获取所述分配队列、所述第一任务队列及所述第二任务队列的更新哈希范围的步骤包括:
6.根据权利要求1所述的线程池管理方法,其特征在于,在所述若所述分配队列的负载系数超过所述负载阈值,则判断与所述分配队列相邻的第一任务队列及第二任务队列的负载系数是否超过负载阈值...
【专利技术属性】
技术研发人员:许畅,翁雄飞,陈硕,张智睿,郭小光,
申请(专利权)人:江西云眼视界科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。