线程池调节方法、装置、存储介质及电子设备与流程

文档序号:26003802发布日期:2021-07-23 21:21阅读:102来源:国知局
线程池调节方法、装置、存储介质及电子设备与流程

本申请涉及计算机技术领域,具体涉及一种线程池调节方法、装置、存储介质及电子设备。



背景技术:

在计算机编程中,线程池是实现计算机程序中并发执行的软件设计方式。通过维护一个线程池,可以提高性能,避免执行延迟。

线程池相对于为每个人物创建一个新线程的主要好处是线程池创建和销毁仅限于初始创建池,这会导致更好的性能和更好的系统稳定性。然而,在多线程处理任务池中的任务时,因为业务有高峰和低谷,导致任务池中的任务时多时少,线程池中线程处理任务时,可能会造成任务堆积、任务处理时效性低、系统资源浪费等问题。



技术实现要素:

本申请实施例提供了一种线程池调节方法、装置、存储介质及电子设备,可解决任务堆积、系统资源浪费的技术问题。所述技术方案如下:

第一方面,本申请实施例提供了一种线程池调节方法,包括:

每隔预设时间获取任务池的任务参数以及所述任务池对应的当前线程池的当前线程参数;

根据所述任务参数以及所述当前线程参数确定所述任务池对应的目标线程池的目标线程参数;

根据所述目标线程参数对所述当前线程池的容量进行调节。

第二方面,本申请实施例提供了一种线程池调节装置,所述装置包括:

获取模块,用于每隔预设时间获取任务池的任务参数以及所述任务池对应的当前线程池的当前线程参数;

确定模块,用于根据所述任务参数以及所述当前线程参数确定所述任务池对应的目标线程池的目标线程参数;

调节模块,用于根据所述目标线程参数对所述当前线程池的容量进行调节。

第三方面,本申请实施例提供了一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法步骤。

第四方面,本申请实施例提供了一种电子设备,包括:存储器和处理器;其中,所述存储器存储有计算机程序,所述计算机程序适用于由所述处理器加载并执行上述的方法步骤。

本申请一些实施例提供的技术方案带来的有益效果至少包括:

上述线程池调节方法、装置、存储介质及电子设备工作时,每隔预设时间获取任务池的任务参数以及所述任务池对应的当前线程池的当前线程参数,根据所述任务参数以及所述当前线程参数确定所述任务池对应的目标线程池的目标线程参数,根据所述目标线程参数对所述当前线程池的容量进行调节。本申请中电子设备通过每隔预设时间周期性确定任务池的任务参数以及对应的当前线程池的当前线程参数,就可以简单准确地根据预先设置的计算策略自适应调节当前线程池的容量,在任务过多时可以提高线程池执行服务的效率和性能,实现任务堆积的最小化,在任务过少时可以减少线程数量节省系统资源。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的一种调节系统的网络架构示意图;

图2是本申请实施例提供的一种线程池调节方法的流程示意图;

图3是本申请实施例提供的一种线程池调节方法的另一流程示意图;

图4是本申请实施例提供的一种线程池初始化配置示意图;

图5是本申请实施例提供的一种线程处理任务示意图;

图6是本申请实施例提供的一种线程池扩容示意图;

图7是本申请实施例提供的一种线程池缩容示意图;

图8是本申请实施例提供的一种线程池调节装置的结构示意图;

图9是本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例方式作进一步地详细描述。

下面的描述设计附图时,除非另有表示,不同附图中的相同数字表示相同的或相似的要素。以下示例性实施例中描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

下面结合具体的实施例对本申请进行详细说明。

图1示出了可以应用于本申请的异步调用方法的示例性系统架构100。

如图1所示,系统架构100可以包括用户101、电子设备102和网络103。网络103用于在用户101和电子设备102之间提供通信链路的介质。其中,系统构架100可以应用于各种实际应用场景,例如,当系统构架100应用于线上直播时,用户101可以为在进行线上直播课程中的老师或者学生或者学生家长以及各部门研发人员等,用户101可以用于触发电子设备102上的各种指令,电子设备102可以为老师客户端、学生客户端以及后台提供服务的服务端等设备,电子设备102可以但不限于用于负责读取用户101触发的各种指令,对指令译码并执行指令。示例性的,在进行线上直播课程的过程中用户101(例如但不限于老师甲)为了布置了一次在线考试,然后要求学生在规定时间内提交电子试卷,老师客户端在线进行评卷。老师客户端中的自动评卷系统可能由grpc系统框架构成,包含golang和python等多种编程语言共同编程,交互提供调用服务。多个用户101(例如但不限于甲以及学生乙)可以同时通过鼠标点击加载按钮,触发对上传试卷电子文档1业务的上传,然后电子设备102(例如但不限于老师客户端)同时获取到到试卷电子文档1的评卷请求,为了提高在线直播课程的效率。电子设备需要对多个试卷评卷请求进行异步处理,则电子设备可以调用对应的异步接口将多个评卷请求封装为多个对应的异步任务,投递到任务池中,再通过线程池中的多个线程同时对多个异步任务进行处理,最后可以将评卷结果分别发送给各个学生等相关操作。在实际使用过程中,由于在线教育的规模越来越大,用户101可能在某一时段突然增多,从而导致任务量可能出现时多时少的情况,当电子设备102中任务池中任务量过大时,为了处理过量的任务,电子设备102可以扩大线程池的容量,当任务池的任务量过少时,电子设备102可以缩小线程池的容量,这样有助于电子设备102解决任务堆积、系统资源浪费等技术问题。

电子设备102可以是硬件,也可以是软件。当电子设备102为硬件时,可以是具有自适应调借线程池大小功能的的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携式计算机和台式计算机等。当电子设备102为软件时,可以实现成多个软件或软件模块(例如:用来提供异步调用服务),也可以实现成单个软件或软件模块,在此不作具体限定。

网络103可以包括各种类型的有线通信链路或无线通信链路,用户101和电子设备102之间可以通过网络103进行数据交互,例如:有线通信链路包括光纤、双绞线或同轴电缆的,无线通信链路包括蓝牙通信链路、无线保真(wireless-fidelity,wi-fi)通信链路或微波通信链路等。

应理解,图1中的用户101、电子设备102和网络103的数目仅是示意性的。根据实现需要,可以是任意数量的用户101、电子设备102和网络103。

在下述方法实施例中,为了便于说明,仅以各步骤的执行主体为电子设备进行介绍说明。

下面将结合附图2至图3,对本申请实施例提供的线程池调节方法进行详细介绍。

请参见图2,为本申请实施例提供了一种线程池调节方法的流程示意图。所述方法可以包括以下步骤:

s201、每隔预设时间获取任务池的任务参数以及所述任务池对应的当前线程池的当前线程参数。

一般的,任务池可以是指电子设备中业务层存储任务的组件,可以认为是任务的容器,是在线程间共享任务的实例池,任务池对客户层是完全透明的,例如:任务池可以为队列、表格、数据库等形式。电子设备应用在启动时,任务池被创建,停止时被清除,由于任务池提供的对任务的缓存机制,可以减少频繁地创建和回收任务实例产生的系统开销,并节省存储资源。电子设备触发服务请求后,会基于所述服务请求生成对应的服务任务,电子设备可以通过线程来处理所述服务任务,首先可以获取任务池的存储地址,然后电子设备可以将所述服务任务存储到所述任务池的存储地址对应的存储空间中,然后通过处于空闲状态的线程根据预设的执行策略顺序加载对应的电子设备资源,处理所述服务任务。其中所述任务池的数量可以为一个也可以为多个,可以根据实际任务量设置适量的任务池,有助于提高电子设备的运行效率,所述任务池可以存储在电子设备的本地,也可以上传到云端(例如但不限于存储服务器),然后电子设备可以通过数据传输方式进行交互,有助于减少电子设备的存储空间,调高运行效率。

任务参数可以是指任务池的配置、运行状态等信息,例如:核心任务数、任务总数、等待新任务的等待时间、时间单位、拒绝策略、任务阈值、处理任务池的清理时间、当前存储的任务数量以及正在执行的任务数量等。电子设备可以根据相关信息对任务池进行初始化处理,然后在任务执行过程中,实时获取部分参数,例如:电子设备可以接收来自用户的初始化指令,自定义对任务池进行初始化处理,得到核心任务数为5、任务总数为10、等待新任务的等待时间为3分钟等初始信息的任务池。然后电子设备在处理过程中,可以通过遍历任务池或者任务管理模块等方式获取所述任务池当前存储的任务数量为2,包括学生用户a的上传在线测试电子文档的任务1和学生用户b的上传在线测试电子文档的任务2,电子设备确定正在执行的任务数量为2,包括学生用户c的上传在线测试电子文档的任务3和学生用户d的上传在线测试电子文档的任务4等信息。

线程池可以理解为一种线程使用模式的容器,在电子设备处理任务的实际使用过程中线程过多会带来调度开销,进而影响缓存局部性和整体性能,而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这样避免了在处理短时间任务时创建与销毁线程的代价,线程池不仅能够保证内核的充分利用,还能防止过分调度,可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络编程接口等的数量,例如:线程数一般取中央处理器数量+2比较合适,线程数过多会导致额外的线程切换开销。线程池的伸缩性对性能有较大的影响,例如:创建太多线程,将会浪费一定的资源,有些线程未被充分使用;销毁太多线程,将导致之后浪费时间再次创建新线程;创建线程太慢,将会导致长时间的等待,性能变差;销毁线程太慢,导致其它线程资源饥饿。在本申请中,电子设备自适应设置线程池的容量有助于提高资源利用率和运行效率,然后可以通过线程池中线程同时处理任务池中任务,提高任务处理效率。

电子设备可以通过线程池提供的初始化参数或属性对线程池进行实时监控等方式获取线程池的当前线程参数,例如:电子设备可以读取预先定义的线程池需要执行的任务数量(taskcount),线程池在运行过程中已完成的任务数量(completedtaskcount),线程池曾经创建过的最大线程数量(largestpoolsize),线程池的线程数量(getpoolsize)等参数确定线程池的当前线程参数。电子设备通过参数largestpoolsize可以确定线程池是否满过,如等于线程池的最大大小,则表示线程池已经处于满载状态。如果线程池不销毁的话,池里的线程不会自动销毁,所以参数getpoolsize只增不减,那么电子设备就可以确定当前活动额线程数。在一种可能的实施例中,电子设备还可以通过扩展线程池进行监控,例如:电子设备通过继承线程池并重写线程池的beforeexecute,afterexecute和terminated等方法,可以在任务执行前,执行后和线程池关闭前确定线程池的当前线程参数(例如但不限于监控任务的平均执行时间、最大执行时间和最小执行时间等)。

因业务数量可能随着用户的增加或者减少或者其它因素(例如但不限于时间等)而变化,本申请中的电子设备可以首先基于任务池和线程池的相关参数自适应配置线程池容量,从而合理高效地处理业务,以及提高资源的使用率和电子设备的运行效率,例如:电子设备可以每隔5分钟获取任务池的任务参数以及所述任务池对应的当前线程池的当前线程参数,然后再判断是否需要对当前线程池进行重新配置。

s202、根据所述任务参数以及所述当前线程参数确定所述任务池对应的目标线程池的目标线程参数。

一般的,目标线程池可以是指具有所述任务参数以及所述当前线程参数确定的线程池,这里的目标线程池不具体是指某一种或一类具体线程池,并没有作具体限定,为了与其它已经创建的另外用途的线程池作区别,为了与所述当前线程池作对应。目标线程参数可以是指所述目标线程池的参数,可以包括:核心线程数、线程总数、等待新线程的等待时间等信息。电子设备通过所述目标线程参数来初始化配置所述目标线程池。在一个可能的实施例中,电子设备也可以接收来自用户的自定义配置指令来初始化配置所述目标线程池,例如:所述自定义配置指令包括,核心线程数为20、线程总数50、等待新线程的等待时间为30秒等信息来配置目标线程池。

电子设备获取任务池的任务参数以及所述任务池对应的当前线程池的当前线程参数后,可以根据所述任务参数以及所述当前线程参数确定所述任务池对应的目标线程池的目标线程参数。例如:电子设备确定所述任务参数包括任务池中任务数量为50,当前线程参数包括处于空闲的线程数为2,则电子设备可以确定所述任务池对应的目标线程池的目标线程参数包括最大线程数可以为50,最小线程是数可以为10等参数信息,合理地计算所述目标线程参数分钟电子设备资源,这样有助于提高业务处理效率。

s203、根据所述目标线程参数对所述当前线程池的容量进行调节。

一般的,电子设备确定所述任务池对应的目标线程池的目标线程参数后,可以根据所述目标线程参数对所述当前线程池的容量进行调节,例如:电子设备确定所述目标线程的存储容量为100k时,经评估计算处理当前任务数量最合理,那么可以将存储容量为50k的当前线程池,进行扩容处理,扩容到100k。电子设备调节容量的方式多种多样,例如电子设备诶可以在当前线程池的基础上进行扩容和缩容,也可以在销毁当前线程池以及新建目标线程池,以及在其它电子设备(例如但不限于云端服务器)或者存储地址开辟相应大小的容量来对当前线程池的进行扩容等处理。在一个可能的实施例中电子设备也可以开辟备用线程池来处理过量任务,例如:电子设备可以再次初始化存储容量为50k的线程池a来和当前线程池一起处理过量任务等,本申请对当前线程池的容量进行调节的方式不作具体限定,可以根据实际使用情况由用户自动以,有助于提高电子设备处理业务的灵活性和多样性,提高用户使用体验。

由上述内容可知,每隔预设时间获取任务池的任务参数以及所述任务池对应的当前线程池的当前线程参数,根据所述任务参数以及所述当前线程参数确定所述任务池对应的目标线程池的目标线程参数,根据所述目标线程参数对所述当前线程池的容量进行调节。本申请中电子设备通过每隔预设时间周期性确定任务池的任务参数以及对应的当前线程池的当前线程参数,就可以简单准确地根据预先设置的计算策略自适应调节当前线程池的容量,在任务过多时可以提高线程池执行服务的效率和性能,实现任务堆积的最小化,在任务过少时可以减少线程数量节省系统资源。

请参见图3,为本申请实施例提供了一种线程池调节方法的另一流程示意图。该线程池调节方法可以包括以下步骤:

s301、获取初始化配置信息,根据所述初始化配置信息至少确定所述当前线程池的默认线程数量、最小线程数量和最大线程数。

一般的,电子设备可以在线程池中获取委托通知,或者确定监控返回值、或者遍历任务列表等方式来判断是否初始化,若确定该线程池为初始化,则需要进行初始化处理,可以降低电子设备在处理业务时的报错率。电子设备可以通过接收来自用户上传的初始化配置信息,然后电子设备就可以根据所述初始化配置信息至少确定所述当前线程池的默认线程数量、最小线程数量和最大线程数,例如:电子设备确定线程池的初始化配置消息至少可以包括线程池的核心线程数量为5,非核心线程数量为3,线程池阈值为6,进出方式为先进先出,超时阻塞时常为60秒,默认线程数量为4,最小线程数量2(例如但不限于可将默认线程数量设置为最小线程数量的两倍等)和最大线程数为10等。如图4所示,用户可以通过在电子设备显示屏中的初始化界面,自定义输入默认线程数量为4,最小线程数量为2,最大线程数量为20等信息,然后可以通过点击电子设备显示屏上的“确定上传”按钮上传相关信息,电子设备也可以在显示屏上显示线程池容量示意图,然后对每个线程对应的区域进行编号,例如:1号线程区域,2号线程区域,3号线程区域,4号线程区域,以及20号线程区域等,也可以显示对应的存储地址等相关信息。

s302、基于所述初始化配置信息、所述默认线程数量、所述最小线程数量和所述最大线程数初始化当前线程池。

一般的,初始化可以是指为数据对象或变量赋初值的做法,如何初始化则取决于所用的程序语言以及所要初始化的对象的存储类型等属性,用于进行初始化的程序结构则称为初始化器或初始化列表。电子设备在获取初始化配置信息后,可以初始化当前线程池,例如:电子设备通过确定初始化函数中的当前线程池维护线程的最少数量为10,当前线程池维护线程的最大数量为50,缓存队列为10,允许的空闲时间为60等信息,然后运行所述初始化函数,再通过返回值或者回调函数等信息确定初始化是否成功。

s303、每隔预设时间获取所述任务池的当前存储的任务数量以及所述任务池对应的当前线程池的当前运行的线程数量。

一般的,电子设备在初始化当前线程池后,可以每隔预设时间获取所述任务池的当前存储的任务数量以及所述任务池对应的当前线程池的当前运行的线程数量,例如:电子设备可以每隔30分钟,在17时30分钟后的18时,再次通过任务池提供的初始化参数或属性对任务池进行预定时刻监控等方式获取任务池的当前存储的任务数量为25,以及确定所述任务池对应的当前线程池的当前运行的线程数量为10。任务池中任务是由线程池中线程来处理,执行对应的服务的,所以需要保证线程池中线程数量匹配任务池中任务数量。如图5所示,任务池中可以有多个任务,然后异步线程池中可以有多线程,电子设备通过系统框架(例如但不限于executor框架)预先设置执行策略,每个线程执行对应的任务,例如:线程1处理任务1,线程2处理任务2,线程3处理任务3等。其中每个线程关联对应的内核线程,然后通过电子设备上的线程调度器(例如但不限于oskernel)进行中央处理器资源调度,每个线程最终都会映射到中央处理器中进行处理,如果中央处理器存在多核,那么就可以并行执行多个线程任务。

s304、判断所述任务数量是否小于或者等于所述最小线程数量。

一般的,电子设备在获取所述任务池的当前存储的任务数量以及所述任务池对应的当前线程池的当前运行的线程数量后,可以判断所述任务数量是否小于或者等于所述最小线程数量,例如:电子设备确定述任务数量为25,在对所述线程池进行初始化处理时,确定的所述最小线程数量为2,则确定所述任务数量大于所述最小线程数量。

s305、根据所述当前运行的线程数量确定第一线程数量,判断所述第一线程数量是否小于所述最小线程数量。

一般的,当电子设备确定所述任务数量小于或者等于所述最小线程数量时,电子设备可以根据所述当前运行的线程数量确定第一线程数量,例如:电子设备确定所述任务数量为11,所述最小线程数量为15,当前线程池的当前运行的线程数量为10,可以通过公式:第一线程数量=当前线程池的当前运行的线程数量/2,来确定第一线程数量为5,本申请中确定所述第一线程数量的具体计算方式不作具体限定,该公式以及公式参数可以由研究人员根据经验值来确定调整,有助于电子设备简单方便地判断最合适的线程池容量。然后电子设备还需要判断所述第一线程数量是否小于所述最小线程数量。

s306、基于所述最小线程数量确定目标线程参数。

一般的,当电子设备确定所述第一线程数量不小于所述最小线程数量时,电子设备可以基于所述最小线程数量确定目标线程参数,例如:电子设备确定所述第一线程数量为5,最小线程数量为2,则电子设备可以将最小线程数量为2作为目标线程参数。

s307、基于所述第一线程数量确定所述目标线程参数。

一般的,当电子设备确定所述第一线程数量小于所述最小线程数量时,电子设备可以基于所述第一线程数量确定所述目标线程参数,例如:电子设备确定所述第一线程数量为5,最小线程数量为10,则电子设备可以所述第一线程数量8作为所述目标线程参数,该确定方式可以由经验值来确定调整,不做具体限定。

s308、根据所述最小线程数量和所述任务数量确定第二线程数量,判断所述第二线程数量是否大于所述当前运行的线程数量。

一般的,当电子设备确定所述任务数量大于所述最小线程数量时,电子设备可以根据所述最小线程数量和所述任务数量确定第二线程数量,例如:电子设备确定所述任务数量为2000,所述最小线程数量为15,电子设备可以根据公式:第二线程数量=所述任务数量/1000+1+最小线程数量,确定所述第二线程数量为18。本申请中确定所述第二线程数量的具体计算方式不作具体限定,该公式以及公式参数可以由经验值来确定调整,不具体限定,有助于电子设备简单方便地判断最合适的线程池容量。然后电子设备还需要判断所述第二线程数量是否大于所述当前运行的线程数量。

s309、基于所述当前线程池的当前线程数量确定目标线程参数。

一般的,当电子设备确定所述第二线程数量不大于所述当前运行的线程数量时,电子设备可以基于所述当前线程池的当前线程数量确定目标线程参数,例如:电子设备确定当前线程池的当前线程数量为18,则将当前线程池的当前线程数量为10作为目标线程参数,该确定方式可以由研究人员经验来确定,不作具体限定。

s310、基于所述第二线程数量和所述最大线程数中的较小值确定所述目标线程参数。

一般的,当电子设备确定所述第二线程数量大于所述当前运行的线程数量时,电子设备可以基于所述第二线程数量和所述最大线程数中的较小值确定所述目标线程参数,例如:电子设备确定所述第二线程数量为18,所述最大线程数,为20,则电子设备可以将所述第二线程数量为18作为所述目标线程参数,该确定方式可以由经验值来确定调整,不作具体限定。

s311、基于所述目标线程参数确定对应的目标线程数量,判断所述目标线程数量对应的占用容量是否大于所述当前线程池的容量。

一般的,电子设备为每个用户创建的新线程,都会为用户的进程空间分配一定的内存作为该新线程的堆栈,若堆栈过大则会浪费电子设备资源,若堆栈过小则会导致内存溢出出现运行崩溃的情况,线程内存可以包括栈帧、局部变量、方法参数等,电子设备可以通过设置线程内存的参数信息来配置线程,以及通过查询指令(例如但不限于smaps指令等)检测线程使用信息(例如但不限于物理内存、线程数量、线程类型等)。电子设备在确定所述目标线程参数后,可以基于所述目标线程参数确定对应的目标线程数量,判断所述目标线程数量对应的占用容量是否大于所述当前线程池的容量,例如:电子设备确定所述目标线程参数包括对应的目标线程数量为18,然后进一步确定18个线程对应的占用容量为25m,确定所述当前线程池的容量的容量为20m。电子设备中线程池的容量与数量不一定成正相关,可能线程池的容量为10m,但是只有两个线程,可能线程池的容量为5m,但是却可能有5个线程,因此本申请比较线程池的容量来调节线程池更准确。

s312、基于所述目标线程数量对应的占用容量与所述当前线程池的容量的差值对所述当前线程池进行扩容处理。

一般的,电子设备确定所述目标线程数量对应的占用容量大于所述当前线程池的容量后,则对所述当前线程池进行扩容处理,例如:电子设备确定所述目标线程数量对应的占用容量为25m,确定所述当前线程池的容量的容量为20m,则电子设备可以计算出两者之间差值为5m,然后电子设备需要将所述当前线程池的容量从20m扩容到25m。在一个可能的实施例中,当电站设备确定所述目标线程数量对应的占用容量等于所述当前线程池的容量后,则对确定所述目标线程数量对应的占用容量大于所述当前线程池的容量后不进行扩容或者缩容处理。如图6所示,电子设备中的当前线程池有线程1、线程2、线程3和线程4四个线程对应的容量,然后电子设备可以在当前线程池的基础上进行扩容处理,增加线程4和线程5两个线程的容量。

s313、基于所述当前线程池的容量与所述目标线程数量对应的占用容量的差值对所述当前线程池进行缩容处理。

一般的,电子设备确定所述目标线程数量对应的占用容量小于所述当前线程池的容量后,则对所述当前线程池进行缩容处理,例如:电子设备确定所述目标线程数量对应的占用容量为25m,确定所述当前线程池的容量的容量为30m,则电子设备可以计算出两者之间差值为5m,然后电子设备需要将所述当前线程池的容量从30m扩容到25m。如图7所示,电子设备中的当前线程池有线程1、线程2、线程3、线程4、线程5和线程6六个线程对应的容量,然后电子设备可以在当前线程池的基础上进行缩容处理,减少空闲线程:线程4和线程5两个线程的容量。在一个可能的实施例中电子设备还可以通过实时接收来自用户的修改指令,基于所述修改指令,对所述当前线程池进行调解处理。在一种可能的实施例中,电子设备还可以通过显示屏展示所述当前线程池的相关信息,有助于用户直观监控电子设备的线程运行状态,若出现报错情况可以及时进行分析处理。

在一种可能的实施例中,电子设备还可以采集一段时间内的目标线程参数,然后确定不同时间段内目标线程池的目标线程池参数,智能地在确定时间段内对所述当前线程池的容量进行调节,例如:电子设备采集了三月份的所有目标线程参数,在每天的18时至20时,当前线程池的容量为30m,其它时间为20m,则电子设备可以从四月份开始,每天的18时至20时将20m容量的当前线程池扩容为30m,其它时间再将30m容量的当前线程池缩容为20m,实现电子设备资源利用最优化的目的,可以有效防止线程池阻塞,同时也避免了由于线程池资源和任务量不匹配带来部分线程池过于空闲或者过于繁忙,造成的资源浪费。

本申请实施例的方案在执行时,每隔预设时间获取任务池的任务参数以及所述任务池对应的当前线程池的当前线程参数,根据所述任务参数以及所述当前线程参数确定所述任务池对应的目标线程池的目标线程参数,根据所述目标线程参数对所述当前线程池的容量进行调节。本申请中电子设备通过每隔预设时间周期性确定任务池的任务参数以及对应的当前线程池的当前线程参数,就可以简单准确地根据预先设置的计算策略自适应调节当前线程池的容量,在任务过多时可以提高线程池执行服务的效率和性能,实现任务堆积的最小化,在任务过少时可以减少线程数量节省系统资源。

下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。

请参见图8,其示出了本申请一个示例性实施例提供的线程池调节装置的结构示意图,以下简称调节装置8。调节装置8可以通过软件、硬件或者两者的结合实现成为终端的全部或一部分。包括:

获取模块801,用于每隔预设时间获取任务池的任务参数以及所述任务池对应的当前线程池的当前线程参数;

确定模块802,用于根据所述任务参数以及所述当前线程参数确定所述任务池对应的目标线程池的目标线程参数;

调节模块803,用于根据所述目标线程参数对所述当前线程池的容量进行调节。

在一种可能的实施例中,所述调节装置8还包括:

第二获取模块,用于获取初始化配置信息,根据所述初始化配置信息至少确定所述当前线程池的默认线程数量、最小线程数量和最大线程数;

第二确定模块,用于基于所述初始化配置信息、所述默认线程数量、所述最小线程数量和所述最大线程数初始化当前线程池。

在一种可能的实施例中,所述确定模块802包括:

第一确定单元,用于若所述任务数量小于或者等于所述最小线程数量时,则根据所述当前运行的线程数量确定第一线程数量;

第二确定单元,用于若所述第一线程数量小于所述最小线程数量,则基于所述最小线程数量确定目标线程参数;

第三确定单元,用于若所述第一线程数量大于或者等于所述最小线程数量,则基于所述第一线程数量确定所述目标线程参数。

在一种可能的实施例中,所述确定模块802包括:

第四确定单元,用于若所述任务数量大于所述最小线程数量时,则根据所述最小线程数量和所述任务数量确定第二线程数量;

第五确定单元,用于若所述第二线程数量小于或者等于所述当前运行的线程数量时,则基于所述当前线程池的当前线程数量确定目标线程参数;

第六确定单元,用于若所述第二线程数量大于所述当前运行的线程数量时,则基于所述第二线程数量和所述最大线程数中的较小值确定所述目标线程参数。

在一种可能的实施例中,所述调节模块803包括:

比较单元,用于基于所述目标线程参数确定对应的目标线程数量,以及比较所述目标线程数量对应的占用容量与所述当前线程池的容量;

扩容单元,用于若所述目标线程数量对应的占用容量大于所述当前线程池的容量时,则基于所述目标线程数量对应的占用容量与所述当前线程池的容量的差值对所述当前线程池进行扩容处理。

在一种可能的实施例中,所述调节模块803包括:

缩容单元,用于若所述目标线程数量对应的占用容量小于所述当前线程池的容量时,则基于所述当前线程池的容量与所述目标线程数量对应的占用容量的差值对所述当前线程池进行缩容处理。

本申请实施例和图2至图3的方法实施例基于同一构思,其带来的技术效果也相同,具体过程可参照图2至图3的方法实施例的描述,此处不再赘述。

所述装置8可以为实现相关功能的现场可编程门阵列(field-programmablegatearray,fpga),专用集成芯片,系统芯片(systemonchip,soc),中央处理器(centralprocessorunit,cpu),网络处理器(networkprocessor,np),数字信号处理电路,微控制器(microcontrollerunit,mcu),还可以采用可编程控制器(programmablelogicdevice,pld)或其他集成芯片。

本申请实施例的方案在执行时,每隔预设时间获取任务池的任务参数以及所述任务池对应的当前线程池的当前线程参数,根据所述任务参数以及所述当前线程参数确定所述任务池对应的目标线程池的目标线程参数,根据所述目标线程参数对所述当前线程池的容量进行调节。本申请中电子设备通过每隔预设时间周期性确定任务池的任务参数以及对应的当前线程池的当前线程参数,就可以简单准确地根据预先设置的计算策略自适应调节当前线程池的容量,在任务过多时可以提高线程池执行服务的效率和性能,实现任务堆积的最小化,在任务过少时可以减少线程数量节省系统资源。

本申请实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述的方法步骤,具体执行过程可以参见图2或图3所示实施例的具体说明,在此不进行赘述。

本申请还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的模板的控制方法。

请参见图9,为本申请实施例提供了一种电子设备的结构示意图。如图9所示,所述电子设备9可以包括:至少一个处理器901,至少一个网络接口904,用户接口903,存储器905,至少一个通信总线902。

其中,通信总线902用于实现这些组件之间的连接通信。

其中,用户接口903可以包括显示屏(display)、摄像头(camera),可选用户接口903还可以包括标准的有线接口、无线接口。

其中,网络接口904可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。

其中,处理器901可以包括一个或者多个处理核心。处理器901利用各种借口和线路连接整个终端900内的各个部分,通过运行或执行存储在存储器905内的指令、程序、代码集或指令集,以及调用存储在存储器905内的数据,执行终端900的各种功能和处理数据。可选的,处理器901可以采用数字信号处理(digitalsignalprocessing,dsp)、现场可编程门阵列(field-programmablegatearray,fpga)、可编程逻辑阵列(programmablelogicarray,pla)中的至少一种硬件形式来实现。处理器901可集成中央处理器(centralprocessingunit,cpu)、图像处理器(graphicsprocessingunit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器901中,单独通过一块芯片进行实现。

其中,存储器905可以包括随机存储器(randomaccessmemory,ram),也可以包括只读存储器(read-onlymemory)。可选的,该存储器905包括非瞬时性计算机可读介质(non-transitorycomputer-readablestoragemedium)。存储器905可用于存储指令、程序、代码、代码集或指令集。存储器905可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器905可选的还可以是至少一个位于远离前述处理器901的存储装置。如图9所示,作为一种计算机存储介质的存储器905中可以包括操作系统、网络通信模块、用户接口模块以及线程池调节应用程序。

在图9所示的电子设备900中,用户接口903主要用于为用户提供输入的接口,获取用户输入的数据;而处理器901可以用于调用存储器905中存储的线程池调节应用程序,并具体执行以下操作:

每隔预设时间获取任务池的任务参数以及所述任务池对应的当前线程池的当前线程参数;

根据所述任务参数以及所述当前线程参数确定所述任务池对应的目标线程池的目标线程参数;

根据所述目标线程参数对所述当前线程池的容量进行调节。

在一个实施例中,处理器901执行所述每隔预设时间获取任务池的任务参数以及所述任务池对应的当前线程池的当前线程参数之前,还用于执行:

获取初始化配置信息,根据所述初始化配置信息至少确定所述当前线程池的默认线程数量、最小线程数量和最大线程数;

基于所述初始化配置信息、所述默认线程数量、所述最小线程数量和所述最大线程数初始化当前线程池。

在一个实施例中,处理器901执行所述每隔预设时间获取任务池的任务参数以及所述任务池对应的当前线程池的当前线程参数时,具体执行:

每隔预设时间获取所述任务池的当前存储的任务数量以及所述任务池对应的当前线程池的当前运行的线程数量。

在一个实施例中,处理器901执行所述根据所述任务参数以及所述当前线程参数确定所述任务池对应的目标线程池的目标线程参数时,具体执行:

若所述任务数量小于或者等于所述最小线程数量时,则根据所述当前运行的线程数量确定第一线程数量;

若所述第一线程数量小于所述最小线程数量,则基于所述最小线程数量确定目标线程参数;

若所述第一线程数量大于或者等于所述最小线程数量,则基于所述第一线程数量确定所述目标线程参数。

在一个实施例中,处理器901执行所述根据所述任务参数以及所述当前线程参数确定所述任务池对应的目标线程池的目标线程参数时,还具体执行:

若所述任务数量大于所述最小线程数量时,则根据所述最小线程数量和所述任务数量确定第二线程数量;

若所述第二线程数量小于或者等于所述当前运行的线程数量时,则基于所述当前线程池的当前线程数量确定目标线程参数;

若所述第二线程数量大于所述当前运行的线程数量时,则基于所述第二线程数量和所述最大线程数中的较小值确定所述目标线程参数。

在一个实施例中,处理器901执行所述根据所述目标线程参数对所述当前线程池的容量进行调节时,具体执行:

基于所述目标线程参数确定对应的目标线程数量,以及比较所述目标线程数量对应的占用容量与所述当前线程池的容量;

若所述目标线程数量对应的占用容量大于所述当前线程池的容量时,则基于所述目标线程数量对应的占用容量与所述当前线程池的容量的差值对所述当前线程池进行扩容处理。

在一个实施例中,处理器901执行所述根据所述目标线程参数对所述当前线程池的容量进行调节时,具体执行:

若所述目标线程数量对应的占用容量小于所述当前线程池的容量时,则基于所述当前线程池的容量与所述目标线程数量对应的占用容量的差值对所述当前线程池进行缩容处理。

本申请实施例的技术构思和图2或图3的技术构思相同,具体过程可参照图2或图3的方法实施例,此处不再赘述。

在本申请实施例中,每隔预设时间获取任务池的任务参数以及所述任务池对应的当前线程池的当前线程参数,根据所述任务参数以及所述当前线程参数确定所述任务池对应的目标线程池的目标线程参数,根据所述目标线程参数对所述当前线程池的容量进行调节。本申请中电子设备通过每隔预设时间周期性确定任务池的任务参数以及对应的当前线程池的当前线程参数,就可以简单准确地根据预先设置的计算策略自适应调节当前线程池的容量,在任务过多时可以提高线程池执行服务的效率和性能,实现任务堆积的最小化,在任务过少时可以减少线程数量节省系统资源。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体或随机存储记忆体等。

以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1