具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的基于任务处理的线程分配方法,可以应用于如图3所示的应用环境中。终端通过网络300与服务器200通信。终端可以是一个或者多个。如图3所示,终端可以包括个人计算机120、笔记本电脑110、智能手机130、平板电脑和便携式可穿戴设备等,服务器200可以用独立的服务器或者是多个服务器组成的服务器集群来实现。本申请中,终端通过网络300向服务器200发送任务处理请求,服务器200接收到终端发送的任务处理请求之后,通过本申请的基于任务处理的线程分配方法对该任务处理请求进行线程分配,利用分配的线程处理该任务处理请求,并将处理结果通过网络300反馈到终端。
在一个实施例中,如图4所示,提供了一种基于任务处理的线程分配方法,以该方法应用于图3中的服务器200为例进行说明,包括以下步骤:
S100,获取目标任务的线程阈值,线程阈值为处理目标任务对应的任务数据的最大线程数量。
在本实施例中,对于处理目标任务对应的任务数据的线程数量,服务器设置有预分配的线程阈值。也即是,服务器控制线程池中处理目标任务的任务数据的线程的数量值不超过该预分配的线程阈值。该预分配的线程阈值为服务器根据目标任务的任务类型设置,并且该预分配的线程阈值可动态调整。
S200,获取处理缓存队列中任务数据的线程的数量值,缓存队列用于存储目标任务的任务处理请求调用的任务数据。
在本实施例中,服务器对不同的任务以及对应的任务数据分别做了队列缓存。目标任务对应有缓存队列,用于存储该目标任务的任务处理请求所需调用的任务数据。当服务器接收到终端发送的目标任务的任务处理请求时,将该任务处理请求对应的调用对象,也即是对应的任务数据,存储到目标任务的缓存队列中。此外,对应于目标任务的缓存队列,服务器从线程池中获取对应的线程以处理该缓存队列的任务数据。处理该缓存队列的任务数据的线程可以是一条或多条。
S300,根据线程阈值以及数量值,控制对缓存队列的线程分配。
在本实施例中,服务器对目标任务进行线程分配,以通过线程对目标任务的缓存队列中的任务数据进行处理时,根据获取到的目标任务对应的线程阈值,以及当前处理目标任务的缓存队列中任务数据的线程的数量值,控制对目标任务的缓存队列的线程分配,以使处理目标任务对应的缓存队列中任务数据的线程的数量值不超过该目标任务对应的线程阈值。
在一实施方式中,步骤S300,包括:
当数量值小于线程阈值时,向缓存队列分配线程;
当数量值等于线程阈值时,停止向缓存队列分配线程。
具体地,根据目标任务的线程阈值以及处理目标任务的缓存队列中任务数据的数量值,控制对缓存队列的线程分配的方式为:当检测到处理目标任务的缓存队列中任务数据的线程的数量值小于该目标任务的线程阈值时,服务器继续向该目标任务的缓存队列分配线程,利用该分配的线程对目标任务的缓存队列的任务数据进行任务数据处理。同时,在服务器不断向目标任务的缓存队列分配线程时,目标任务的缓存队列的线程数量逐渐增加。当检测到处理目标任务的缓存队列中任务数据的线程的数量值等于该目标任务的线程阈值时,停止向该目标任务的缓存队列分配线程的操作。因此,分配到目标任务的缓存队列的线程的数量值不会超过服务器预先设定的线程阈值,从而可避免服务器在处理目标任务的任务数据时,调度过多的线程进行数据处理而导致影响其他任务的处理进度,降低使用同一线程池的多个任务之间任务处理过程的互相干扰。
进一步地,当数量值等于线程阈值时,停止向缓存队列分配线程之后,还包括:当确定处理缓存队列中任务数据的任一线程结束任务处理操作时,释放任一线程,并向缓存队列分配线程。
具体地,服务器使用线程处理目标任务的缓存队列中任务数据,当任一线程结束任务处理操作时,服务器释放该线程。此时,处理目标任务的缓存队列中任务数据的线程数量减少,该线程数量小于目标任务的线程阈值,服务器向该目标任务的缓存队列继续分配线程,从而使得处理目标任务的缓存队列的线程数量达到线程阈值,加快目标任务的处理进度。
在一实施例中,步骤S200,包括:通过设置计数器计数的方式获取处理缓存队列中任务数据的线程的数量值。具体地,服务器设置计数器,用于对处理目标任务的缓存队列中任务数据的线程进行计数,统计处理目标任务的缓存队列中任务数据的线程的数量。
进一步地,当服务器向目标任务的缓存队列分配一条线程时,控制计数器的计数值加1。也即是,服务器确认从线程池中调度一个线程,并采用该调度的线程对缓存队列中任务数据进行处理之后,控制计数器的计数值加1。依次类推,当计数器的计数值达到预分配的线程阈值时,则说明处理缓存队列中任务数据的线程数量达到上限,此时不再调度线程以处理缓存队列中的任务数据。
进一步地,控制计数器的计数值加1之后,还包括:确定处理缓存队列中任务数据的任一线程结束任务处理操作时,控制计数器的计数值减1。具体地,服务器对处理缓存队列中的任务数据进行监控。当确定处理缓存队列中任务数据的任一线程结束任务处理操作时,释放该任一线程,同时控制计数器的计数值减1。依次类推,当计数器的计数值未达到预分配的线程阈值时,又从线程池中调度线程,采用调度的线程处理缓存队列中的任务数据。
上述基于任务处理的线程分配方法,对处理目标任务的任务处理请求调用的任务数据的线程在数量上进行控制,预先设置线程阈值。在对目标任务对应的线程数量进行控制时,获取目标任务的线程阈值以及获取处理该目标任务对应的缓存队列中任务数据的线程的数量值,通过线程阈值以及处理该目标任务对应的缓存队列中任务数据的线程的数量值,对分配给处理该目标任务的缓存队列的任务数据的线程进行控制。因此,通过对线程池中线程资源的分配,可避免服务器在处理目标任务的任务数据时,调度过多的线程进行数据处理而导致影响其他任务的处理进度,降低使用同一线程池的多个任务的任务处理过程的互相干扰。
在一实施例中,目标任务为多个。此时,如图5所示,
步骤S100,包括步骤:
S110:获取各目标任务的线程阈值。
步骤S200,包括步骤:
S210:获取处理各目标任务的缓存队列中任务数据的线程的数量值。
步骤S300,包括步骤:
S310:根据各目标任务的线程阈值以及各目标任务的缓存队列对应的线程的数量值,分别控制对各目标任务的缓存队列的线程分配。
在该实施例中,目标任务为多个。各个目标任务对应有缓存队列,各个缓存队列对应有处理该缓存队列中任务数据的线程。服务器对各个目标任务预先设置有线程阈值,各个目标任务的线程阈值可以相同也可以不相同。服务器在对各个目标任务的缓存队列进行线程分配时,根据各个目标任务的线程阈值以及处理各个目标任务的缓存队列中任务数据的线程数量,分别控制对各个目标任务的缓存队列的线程分配。
进一步地,在该实施例中,该基于任务处理的线程分配方法还包括:在第一预设时间段内,多个目标任务中任一目标任务的缓存队列的任务数据大于预设任务数据量时,提高任一目标任务对应的线程阈值,并降低多个目标任务中其他目标任务对应的线程阈值。
具体地,服务器对多个目标任务中各个目标任务的缓存队列中任务数据的数据量进行监控。当检测到在第一预设时间段内,多个目标任务中任一目标任务的缓存队列的任务数据大于预设任务数据量时,提高该任一目标任务对应的线程阈值,并降低其他目标任务对应的线程阈值。此处,各个目标任务对应有预设任务数据量,各个目标任务对应的预设任务数据量可以相同或者而不同。因此,通过该方式,服务器对各个目标任务的线程阈值进行动态调整,提高多个目标任务的整体处理进度。
在一实施例中,如图6所示,该基于任务处理的线程分配方法,还包括以下步骤:
S400,接收目标任务的任务处理请求。
S500,当缓存队列未达到预设最大缓存值时,将任务处理请求调用的任务数据缓存进缓存队列。
S600,当缓存队列达到预设最大缓存值时,返回提醒信息。
在该实施例中,服务器在接收到目标任务的任务处理请求时,获取该任务处理请求需要调用到的任务数据。此处的任务数据指的是,服务器响应该任务处理请求时使用到的任务数据。进一步地,判断该目标任务对应的缓存队列是否达到最大缓存值。当目标任务的缓存队列未达到预设最大缓存值时,将获取到的任务数据缓存进缓存队列中,以便通过线程处理该任务数据。在一实施方式中,目标任务的缓存队列为服务器分配的只用于存储目标任务的任务处理请求调用的任务数据的安全队列。因此,服务器将存储任务数据的队列进行对应分配,可更好地降低使用同一线程池的多个任务之间的互相干扰。
当目标任务的缓存队列达到预设最大缓存值时,缓存队列无法再缓存任务数据,此时返回提醒信息,以提示该缓存队列无法再缓存任务数据,并且不再进行后续操作。其中提醒信息可以是错误提醒的信息。具体地,可以是返回该缓存队列的长度值,以提示操作出现错误。
进一步地,该基于任务处理的线程分配方法,还包括:在第二预设时间段内,提醒信息的返回次数大于预设次数时,提高最大预设缓存值。
具体地,服务器对目标任务的缓存队列中缓存的任务数据的数据量进行监控。当在第二预设时间段内,提醒信息的返回次数大于预设次数时,提高最大预设缓存值,从而使得服务器对目标任务的任务数据的缓存量增大,提高后续目标任务的处理进度。
为了进一步详述上述基于任务处理的线程分配方法,以下提供一具体实施方式:
本申请的基于任务处理的线程分配方法适用的业务场景:针对启用线程池进行多线程并发处理任务的场景。例如:业务系统中处理订单、处理主数据接口服务数据、销售报表的异步下载等场景中,都需要通过线程池启用多线程进行处理。通过本申请的基于任务处理的线程分配方法,可以通过灵活的配置调整3个功能之间对有限线程的分配,既能满足核心功能的处理时效,又可以避免其余功能无线程可用,始终处于阻塞的状态影响用户体验问题。
具体地,将启用线程的方法进行抽象类封装,使用起线程的方法实现该抽象类。该抽象类提供两个成员变量,线程安全的队列和计数器。计数器用于控制该抽象类的线程个数,队列用于处理数据的二级缓存,将超出最大线程数的起线程任务暂存到队列中。同时该抽象类提供统一的调用方法,只需要抽象类实现excute的方法即可。
具体的实施过程,如图7的流程简图所示。基于在启用多线程进行处理前,不同的任务分别做了队列缓存,以及设计线程计数来进行资源分配和控制,具体如下:
1、提供抽象类DataTaskQueue<T>。
包含ConcurrentLinkedQueue<T>,AtomicInteger类成员变量;
ConcurrentLinkedQueue:任务数据的缓存队列;
AtomicInteger:任务数据启用线程的计数器;
成员方法:
addData(T map,TaskExecutor threadPool TaskExecutor,intmaxQueueDeep,int maxThreads)的方法,其中
##map待处理数据;
##threadPoolTaskExecutor线程池;
##maxQueueDeep最大深度,达到最大深度返回false(错误);
##maxThreads最大线程数;
abstract void execute(T data)待实现的处理不同任务逻辑的抽象方法。
##data为待处理数据。
2、任务A实现该抽象类的execute方法。
3、通过调用任务A的实现类的addData方法进行多线程处理。其中,maxQueueDeep为缓存队列的最大深度,maxThreads为最大线程数并支持动态传入。首先判断缓存队列的深度是否达到最大深度,若达到最大深度则返回错误提醒,代表已达到设置的上限。同时,可以根据服务器的实际情况调整最大深度。如果缓存队列的深度还没达到最大深度,则进一步判断线程的计数器是否达到最大线程数。线程的计数器达到最大线程数则任务数据在缓存队列中等待,没有达到最大线程数则计数器+1后,调用线程池线程,采用该线程循环处理缓存队列中的任务数据,直到队列长度为0,则计数器-1,结束。
以下举例说明:
业务B1,业务B2和业务B3共用一个线程池Tpool。线程池Tpool的核心线程数50,最大线程数50。其中业务B1的缓存队列的最大深度的深度值B1-maxQueueDeep=200,最大线程数的数量值B1-maxThreads=10。业务B2的缓存队列的最大深度的深度值B2-maxQueueDeep=300,最大线程数的数量值B2-maxThreads=20。此外,业务B3的缓存队列的最大深度的深度值B3-maxQueueDeep=500,最大线程数的数量值B3-maxThreads=20。每个业务的缓存队列的最大深度和最大线程数都可以动态传入。
业务B1启用线程,服务器判断出业务B1的ConcurrentLinkedQueue的缓存队列的深度>B1-maxQueueDeep,此时已达处理能力上限,返回异常,否则将业务B1的任务数据加到缓存队列中。接着判断出业务B1的计数器的数值AtomicInteger>B1-maxThreads时,服务器不再获取线程池Tpool的线程以进行数据处理。反之,服务器获取线程池Tpool的线程对业务B1进行数据处理,之后AtomicInteger+1,循环查询业务B1的缓存队列数据进行数据处理,直至处理完,AtomicInteger-1。
如果业务B1的业务数据有积压,可以调整B1-maxQueueDeep=300。同时可以将业务B2和业务B3分配的线程数按实际场景缩减,将业务B2和业务B3的缩减的线程分配给业务B1,此时B1-maxThreads=20,因此可加快业务B1的处理速度。
因此,上述具体实施方式中的基于任务处理的线程分配方法,针对同一个线程池中任务处理之间出现因共享资源相互影响的情况,通过对每个任务占用线程数进行动态调整,达到对线程资源的有效分配,既能兼顾重要任务的优先处理的情况下,也能平衡任务之间的相互影响。
应该理解的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图8所示,提供了一种基于任务处理的线程分配装置,包括:第一获取模块10、第二获取模块20和控制模块30,其中:
获取模块10用于获取目标任务的线程阈值,线程阈值为处理目标任务对应的任务数据的最大线程数量。
在本实施例中,对于处理目标任务对应的任务数据的线程数量,服务器设置有预分配的线程阈值。也即是,服务器控制线程池中处理目标任务的任务数据的线程的数量值不超过该预分配的线程阈值。该预分配的线程阈值为服务器根据目标任务的任务类型设置,并且该预分配的线程阈值可动态调整。
第二获取模块20用于获取处理缓存队列中任务数据的线程的数量值,缓存队列用于存储目标任务的任务处理请求调用的任务数据。
在本实施例中,服务器对不同的任务以及对应的任务数据分别做了队列缓存。目标任务对应有缓存队列,用于存储该目标任务的任务处理请求所需调用的任务数据。当服务器接收到终端发送的目标任务的任务处理请求时,将该任务处理请求对应的调用对象,也即是对应的任务数据,存储到目标任务的缓存队列中。此外,对应于目标任务的缓存队列,服务器从线程池中获取对应的线程以处理该缓存队列的任务数据。处理该缓存队列的任务数据的线程可以是一条或多条。
控制模块30用于根据线程阈值以及数量值,控制对缓存队列的线程分配。
在本实施例中,服务器对目标任务进行线程分配,以通过线程对目标任务的缓存队列中的任务数据进行处理时,根据获取到的目标任务对应的线程阈值,以及当前处理目标任务的缓存队列中任务数据的线程的数量值,控制对目标任务的缓存队列的线程分配,以使处理目标任务对应的缓存队列中任务数据的线程的数量值不超过该目标任务对应的线程阈值。
在一实施例中,控制模块30还用于当数量值小于线程阈值时,向缓存队列分配线程;当数量值等于线程阈值时,停止向缓存队列分配线程。
具体地,根据目标任务的线程阈值以及处理目标任务的缓存队列中任务数据的数量值,控制对缓存队列的线程分配的方式为:当检测到处理目标任务的缓存队列中任务数据的线程的数量值小于该目标任务的线程阈值时,服务器继续向该目标任务的缓存队列分配线程,利用该分配的线程对目标任务的缓存队列的任务数据进行任务数据处理。同时,在服务器不断向目标任务的缓存队列分配线程时,目标任务的缓存队列的线程数量逐渐增加。当检测到处理目标任务的缓存队列中任务数据的线程的数量值等于该目标任务的线程阈值时,停止向该目标任务的缓存队列分配线程的操作。因此,分配到目标任务的缓存队列的线程的数量值不会超过服务器预先设定的线程阈值,从而可避免服务器在处理目标任务的任务数据时,调度过多的线程进行数据处理而导致影响其他任务的处理进度,降低使用同一线程池的多个任务的任务处理过程的互相干扰。
进一步地,当数量值等于线程阈值时,停止向缓存队列分配线程之后,还包括:当确定处理缓存队列中任务数据的任一线程结束任务处理操作时,释放任一线程,并向缓存队列分配线程。
具体地,服务器使用线程处理目标任务的缓存队列中任务数据,当任一线程结束任务处理操作时,服务器释放该线程。此时,处理目标任务的缓存队列中任务数据的线程数量减少,该线程数量小于目标任务的线程阈值,服务器向该目标任务的缓存队列继续分配线程,从而使得处理目标任务的缓存队列的线程数量达到线程阈值,加快目标任务的处理进度。
在一实施例中,第二获取模块20还用于通过设置计数器计数的方式获取处理缓存队列中任务数据的线程的数量值。具体地,服务器设置计数器,用于对处理目标任务的缓存队列中任务数据的线程进行计数,统计处理目标任务的缓存队列中任务数据的线程的数量。
进一步地,当服务器向目标任务的缓存队列分配一条线程时,控制计数器的计数值加1。也即是,服务器确认从线程池中调度一个线程,并采用该调度的线程对缓存队列中任务数据进行处理之后,控制计数器的计数值加1。依次类推,当计数器的计数值达到预分配的线程阈值时,则说明处理缓存队列中任务数据的线程数量达到上限,此时不再调度线程以处理缓存队列中的任务数据。
进一步地,控制计数器的计数值加1之后,还包括:确定处理缓存队列中任务数据的任一线程结束任务处理操作时,控制计数器的计数值减1。具体地,服务器对处理缓存队列中的任务数据进行监控。当确定处理缓存队列中任务数据的任一线程结束任务处理操作时,释放该任一线程,同时控制计数器的计数值减1。依次类推,当计数器的计数值未达到预分配的线程阈值时,又从线程池中调度线程,采用调度的线程处理缓存队列中的任务数据。
在一实施例中,目标任务为多个。此时,获取模块10用于获取各目标任务的线程阈值。第二获取模块20用于获取处理各目标任务的缓存队列中任务数据的线程的数量值。控制模块30用于根据各目标任务的线程阈值以及各目标任务的缓存队列对应的线程的数量值,分别控制对各目标任务的缓存队列的线程分配。
在该实施例中,目标任务为多个。各个目标任务对应有缓存队列,各个缓存队列对应有处理该缓存队列中任务数据的线程。服务器对各个目标任务预先设置有线程阈值,各个目标任务的线程阈值可以相同也可以不相同。服务器在对各个目标任务的缓存队列进行线程分配时,根据各个目标任务的线程阈值以及处理各个目标任务的缓存队列中任务数据的线程数量,分别控制对各个目标任务的缓存队列的线程分配。
进一步地,该基于任务处理的线程分配装置还包括调整模块。调整模块用于在第一预设时间段内,多个目标任务中任一目标任务的缓存队列的任务数据大于预设任务数据量时,提高任一目标任务对应的线程阈值,并降低多个目标任务中其他目标任务对应的线程阈值。
具体地,服务器对多个目标任务中各个目标任务的缓存队列中任务数据的数据量进行监控。当检测到在第一预设时间段内,多个目标任务中任一目标任务的缓存队列的任务数据大于预设任务数据量时,提高该任一目标任务对应的线程阈值,并降低其他目标任务对应的线程阈值。此处,各个目标任务对应有预设任务数据量,各个目标任务对应的预设任务数据量可以相同或者而不同。因此,通过该方式,服务器对各个目标任务的线程阈值进行动态调整,提高多个目标任务的整体处理进度。
在一实施例中,如图9所示,该基于任务处理的线程分配装置还包括接收模块40、缓存模块50和返回模块60。
接收模块40用于接收目标任务的任务处理请求。缓存模块50用于当缓存队列未达到预设最大缓存值时,将任务处理请求调用的任务数据缓存进缓存队列。返回模块60用于当缓存队列达到预设最大缓存值时,返回提醒信息。
在该实施例中,服务器在接收到目标任务的任务处理请求时,获取该任务处理请求需要调用到的任务数据。此处的任务数据指的是,服务器响应该任务处理请求时使用到的任务数据。进一步地,判断该目标任务对应的缓存队列是否达到最大缓存值。当目标任务的缓存队列未达到预设最大缓存值时,将获取到的任务数据缓存进缓存队列中,以便通过线程处理该任务数据。在一实施方式中,目标任务的缓存队列为服务器分配的只用于存储目标任务的任务处理请求调用的任务数据的安全队列。因此,服务器将存储任务数据的队列进行对应分配,可更好地降低使用同一线程池的多个任务之间的互相干扰。
当目标任务的缓存队列达到预设最大缓存值时,缓存队列无法再缓存任务数据,此时返回提醒信息,以提示该缓存队列无法再缓存任务数据,并且不再进行后续操作。其中提醒信息可以是错误提醒的信息。具体地,可以是返回该缓存队列的长度值,以提示操作出现错误。
进一步地,该基于任务处理的线程分配装置还包括提高模块。提高模块用于在第二预设时间段内,提醒信息的返回次数大于预设次数时,提高最大预设缓存值。
具体地,服务器对目标任务的缓存队列中缓存的任务数据的数据量进行监控。当在第二预设时间段内,提醒信息的返回次数大于预设次数时,提高最大预设缓存值,从而使得服务器对目标任务的任务数据的缓存量增大,提高后续目标任务的处理进度。
关于基于任务处理的线程分配装置的具体限定可以参见上文中对于基于任务处理的线程分配方法的限定,在此不再赘述。上述基于任务处理的线程分配装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储任务数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现上述任意一种基于任务处理的线程分配方法。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
获取目标任务的线程阈值,线程阈值为处理目标任务对应的任务数据的最大线程数量;获取处理缓存队列中任务数据的线程的数量值,缓存队列用于存储目标任务的任务处理请求调用的任务数据;根据线程阈值以及数量值,控制对缓存队列的线程分配。
在一个实施例中,目标任务为多个,处理器执行计算机程序时还实现以下步骤:
获取各目标任务的线程阈值;获取处理各目标任务的缓存队列中任务数据的线程的数量值;根据各目标任务的线程阈值以及各目标任务的缓存队列对应的线程的数量值,分别控制对各目标任务的缓存队列的线程分配。
在该实施例中,处理器执行计算机程序时还实现以下步骤:
在第一预设时间段内,多个目标任务中任一目标任务的缓存队列的任务数据大于预设任务数据量时,提高任一目标任务对应的线程阈值,并降低多个目标任务中其他目标任务对应的线程阈值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
当数量值小于线程阈值时,向缓存队列分配线程;当数量值等于线程阈值时,停止向缓存队列分配线程。
在该实施例中,处理器执行计算机程序时还实现以下步骤:
当确定处理缓存队列中任务数据的任一线程结束任务处理操作时,释放任一线程,并向缓存队列分配线程。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
接收目标任务的任务处理请求;当缓存队列未达到预设最大缓存值时,将任务处理请求调用的任务数据缓存进缓存队列;当缓存队列达到预设最大缓存值时,返回提醒信息。
进一步地,处理器执行计算机程序时还实现以下步骤:
在第二预设时间段内,提醒信息的返回次数大于预设次数时,提高最大预设缓存值。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取目标任务的线程阈值,线程阈值为处理目标任务对应的任务数据的最大线程数量;获取处理缓存队列中任务数据的线程的数量值,缓存队列用于存储目标任务的任务处理请求调用的任务数据;根据线程阈值以及数量值,控制对缓存队列的线程分配。
在一个实施例中,目标任务为多个,计算机程序被处理器执行时还实现以下步骤:
获取各目标任务的线程阈值;获取处理各目标任务的缓存队列中任务数据的线程的数量值;根据各目标任务的线程阈值以及各目标任务的缓存队列对应的线程的数量值,分别控制对各目标任务的缓存队列的线程分配。
在该实施例中,计算机程序被处理器执行时还实现以下步骤:
在第一预设时间段内,多个目标任务中任一目标任务的缓存队列的任务数据大于预设任务数据量时,提高任一目标任务对应的线程阈值,并降低多个目标任务中其他目标任务对应的线程阈值。
在该实施例中,计算机程序被处理器执行时还实现以下步骤:
当数量值小于线程阈值时,向缓存队列分配线程;当数量值等于线程阈值时,停止向缓存队列分配线程。
进一步地,计算机程序被处理器执行时还实现以下步骤:
当确定处理缓存队列中任务数据的任一线程结束任务处理操作时,释放任一线程,并向缓存队列分配线程。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
接收目标任务的任务处理请求;当缓存队列未达到预设最大缓存值时,将任务处理请求调用的任务数据缓存进缓存队列;当缓存队列达到预设最大缓存值时,返回提醒信息。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
在第二预设时间段内,提醒信息的返回次数大于预设次数时,提高最大预设缓存值。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。