本技术涉及通信,特别是涉及一种线程池管理方法及系统。
背景技术:
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、第二分配模块,用于将所述哈希值与所述更新哈希范围进行比对,以自所述分配队列、所述第一任务队列及所述第二任务队列中确定第一终选队列,并将所述待处理任务分配至所述第一终选队列。
43、相比于现有技术,本发明的有益效果在于:通过为每个所述线程分别配置所述任务队列,在获取到所述待处理任务后,通过所述哈希值确定所述待处理任务所归属的队列,基于时序性任务的哈希值之间的一致性,其将分配至同一所述线程进行先后处理,满足了对任务的时序性处理要求,在完成所述分配队列的确定后,通过所述负载系数,考虑了所述分配队列内待处理任务的数量,即与所述分配队列对应的所述线程的处理效率,通过对与其相邻的所述任务队列的负载系数的判定,考虑了不同的所述任务队列之间的任务数量的差异,进而通过对所述初始哈希范围的适应性调整,均衡了不同的所述任务队列的任务数量,一定程度确保了不同的所述线程的处理效率的均衡性,提高了资源的有效利用率。
44、本技术的一个或多个实施例的细节在以下附图和描述中提出,以使本技术的其他特征、目的和优点更加简明易懂。