CN105389208B - 作业处理方法及装置 - Google Patents
作业处理方法及装置 Download PDFInfo
- Publication number
- CN105389208B CN105389208B CN201510763240.1A CN201510763240A CN105389208B CN 105389208 B CN105389208 B CN 105389208B CN 201510763240 A CN201510763240 A CN 201510763240A CN 105389208 B CN105389208 B CN 105389208B
- Authority
- CN
- China
- Prior art keywords
- thread
- untreated
- threshold value
- default
- threads
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- General Factory Administration (AREA)
Abstract
本申请提供了一种作业处理方法实施例,本实施例确定***中某种作业中未处理作业的数量,以及当前处理该种作业的线程的数量,并基于未处理作业的数量与预设的作业未处理阈值的大小关系、及当前线程的数量与预设的线程启动阈值的大小关系,来启动数量不同的新线程,以使新线程来处理作业。可见,相较于现有启动某个固定数量的线程,且为线程分配固定作业处理的技术,本实施例可以使用预设的未处理作业阈值及预设的线程启动阈值,分别确定***中未处理作业的情况及已存在线程的数量情况,针对不同情况启动数量不同的新线程,作业处理效果更好,且避免给***造成较大的线程维护压力。本申请还提供了一种作业处理装置,以保证上述方法在实际中的应用。
Description
技术领域
本申请涉及作业并行处理技术领域,更具体地,是作业处理方法及装置。
背景技术
计算机***中,待处理的任务可以认为是作业。***对作业的处理过程 可以具体为,***启动线程,以使线程处理作业。目前,***针对未处理的 作业,启动数量固定的线程,并且为每个线程各自指定需要处理哪些作业, 只有全部的线程均执行完毕各自的作业后,才可以认为本批次的作业已经执 行完毕。
可以知道的是,作业的性质不同,则线程的处理速度也不尽相同,因此, 可能出现某个线程已经执行完毕,需要等待其他线程的情况,或者,可能出 现线程启动过多,造成***较大压力的情况。可见,现有的作业处理方式处 理效果较差。
发明内容
有鉴于此,本申请提供了一种作业处理方法,用以解决现有技术中作业 处理效果较差的技术问题。另外,本申请还提供了一种作业处理装置,用以 保证所述方法在实际中的应用及实现。
为实现所述目的,本申请提供的技术方案如下:
本申请的第一方面提供了一种作业处理方法,包括:
确定目标作业中未处理作业的数量,并将所述数量作为作业未处理数量;
确定处理所述目标作业的线程的数量,并将所述数量作为处理线程数量;
基于所述作业未处理数量与预设未处理阈值之间的大小关系、以及所述 处理线程数量与预设启动线程值之间的大小关系,依据不同的线程启动规则, 启动相应数量的新线程;
触发所述新线程处理所述未处理作业;
其中,所述预设未处理阈值,用于表示若所述作业未处理数量达到该阈 值,则需要增加新线程;所述预设启动线程值,用于表示为所述目标作业启 动的线程的最低值。
本申请的第二方面提供了一种作业处理装置,包括:
作业未处理数量确定模块,用于确定目标作业中未处理作业的数量,并 将所述数量作为作业未处理数量;
处理线程数量确定模块,用于确定处理所述目标作业的线程的数量,并 将所述数量作为处理线程数量;
新线程启动模块,用于基于所述作业未处理数量与预设未处理阈值之间 的大小关系、以及所述处理线程数量与预设启动线程值之间的大小关系,依 据不同的线程启动规则,启动相应数量的新线程;
新线程处理作业模块,用于触发所述新线程处理所述未处理作业;
其中,所述预设未处理阈值,用于表示若所述作业未处理数量达到该阈 值,则需要增加新线程;所述预设启动线程值,用于表示为所述目标作业启 动的线程的最低值。
由以上技术方案可知,本申请提供了一种作业处理方法实施例,本实施 例首先确定出***中某种作业中未处理作业的数量,以及当前处理该种作业 的线程的数量,并基于未处理作业的数量与预设的作业未处理阈值之间的大 小关系、以及当前线程的数量与预设的线程启动阈值之间的大小关系,来确 定不同的线程启动规则,并通过不同的线程启动规则,来启动数量不同的新 线程,以使新线程来处理未处理的作业。可见,相较于现有的启动某个固定 数量的线程,且为线程分配固定作业处理的技术,本实施例可以使用预设的未处理作业阈值及预设的线程启动阈值,分别确定***中未处理作业的情况 及已存在线程的数量情况,针对不同情况启动数量不同的新线程,作业处理 效果更好,且避免给***造成较大的线程维护压力。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实 施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面 描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不 付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的作业处理方法实施例1的流程图;
图2为本申请提供的作业处理方法实施例2的流程图;
图3为本申请提供的作业处理方法实施例3的流程图;
图4为本申请提供的作业处理装置实施例1的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行 清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而 不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做 出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1,其示出了本申请提供的作业处理方法实施例1的流程。如图1所 示,本实施例可以具体包括步骤S101~步骤S104。
步骤S101:确定目标作业中未处理作业的数量,并将数量作为作业未处 理数量。
其中,***中包含若干作业,此些作业可以划分为多种类型,进而可以 将某种类型的作业作为目标作业。例如,作业的类型包括批量查询作业及批 量显示作业,将批量查询作业作为目标作业。
需要说明的是,目标作业包含已经处理完的作业,也包含未被处理的作 业。在目标作业中,确定出未被处理的作业,并统计未被处理的作业的数量, 为了便于描述,将该数量称为作业未处理数量JobNum。
需要说明的是,***中可以维护有作业表,该表用于记录***中各个作 业的参数,其中包括作业的类型、以及作业是否在被处理中。因此,可以从 该作业表中,统计出目标作业中还未被处理的作业的数量,即作业未处理数 量JobNum。有关作业表的说明可以详见下文,此处并不赘述。
步骤S102:确定处理目标作业的线程的数量,并将数量作为处理线程数 量。
其中,***中启动有若干线程,线程是用来处理作业的。在此些线程中, 确定出用来处理目标作业的线程,并统计此些线程的数量,为了便于描述, 将此数量称为处理线程数量ThreadNum。
需要说明的是,***中可以维护有线程表,该表用于记录线程的状态, 其中包括线程是否在执行处理作业的过程中,以及处理的具体为何种类型的 作业。因此,从该线程表中,可以确定出处理目标作业的线程的数量,即处 理线程数量ThreadNum。有关线程表的说明可以详见下文,此处并不赘述。
另外,本步骤与步骤S101的执行顺序并非局限于图1,或者,还可以是先 执行步骤S102,再执行步骤S101,或者,还可以是同时执行。
步骤S103:基于作业未处理数量与预设未处理阈值之间的大小关系、以 及处理线程数量与预设启动线程值之间的大小关系,依据不同的线程启动规 则,启动相应数量的新线程;
其中,预设未处理阈值,用于表示若作业未处理数量达到该阈值,则需 要增加新线程;预设启动线程值,用于表示为目标作业启动的线程的最低值。 另外,该预设启动线程值,也可以认为是为该目标作业默认启动的线程数量 值。
例如,预设未处理阈值为15,若目标作业的作业未处理数量为17,作业 未处理数量超过了预设未处理阈值,说明需要增加新的线程。又如,预设启 动线程值为20,表示为该目标作业默认启动20个线程,此20个线程是用来处 理目标作业的。
需要说明的是,作业未处理数量与预设未处理阈值之间相比,具有大小 关系。同样,处理线程数量与预设启动线程值之间也具有大小关系。根据两 个大小关系,来确定不同的线程启动规则。不同的线程启动规则,启动的新 线程的数量是不同的,因此,根据两个大小可以启动数量不同的新线程。其 中,具体的线程启动规则可以参见下文详细描述。
其中,作业未处理数量与预设未处理阈值之间的大小关系,具体可以是 作业未处理数量大于、等于或小于预设未处理阈值。若作业未处理数量大于 预设未处理阈值,则说明未处理的作业过多,需要增加线程。
同样,处理线程数量与预设启动线程值之间的大小关系,具体可以是处 理线程数量大于、等于或小于预设启动线程值。若处理线程数量并未超过预 设启动线程值,则说明***中当前存在的线程数量较少,可以增加新的线程。
可见,本实施例通过各种阈值来确定***中作业处理及线程存在情况。 可以知道的是,若***中未处理作业过多,需要增加线程,但是也需要考虑 ***中当前已经存在的线程数,是否可以支持***再启动新的线程,以免造 成***过大的线程维护压力。
步骤S104:触发新线程处理未处理作业。
其中,启动的新线程需要执行处理作业的任务,因此,启动新线程,以 使新线程处理未处理的目标作业。具体地,新线程可以在作业池中查找未处 理的目标作业,查找到后随机选择进行处理。需要说明的是,每个线程在处 理完毕或者不存在未处理作业时,自动退出或者称为死亡。
由以上可知,本申请提供了一种作业处理方法实施例,本实施例首先确 定出***中某种作业中未处理作业的数量,以及当前处理该种作业的线程的 数量,并基于未处理作业的数量与预设的作业未处理阈值之间的大小关系、 以及当前线程的数量与预设的线程启动阈值之间的大小关系,来确定不同的 线程启动规则,并通过不同的线程启动规则,来启动数量不同的新线程,以 使新线程来处理未处理的作业。可见,相较于现有的启动某个固定数量的线 程,且为线程分配固定作业处理的技术,本实施例可以使用预设的未处理作业阈值及预设的线程启动阈值,分别确定***中未处理作业的情况及已存在 线程的数量情况,针对不同情况启动数量不同的新线程,作业处理效果更好, 且避免给***造成较大的线程维护压力。
需要说明的是,***中,未处理作业的数量随着被线程处理而发生变化, 且线程在执行完毕自身的处理作业后便退出。可见,***中的线程及未处理 作业的数量是变化的。因此,以上实施例可以是针对***某个处理阶段的单 次执行,且可以是循环多次执行,即每个预设时间间隔后,便执行一次,直 至目标作业均被处理完毕。
参见图2,其示出了本申请提供的作业处理方法实施例2的流程。如图2所 示,本实施例可以具体包括以下步骤S201~步骤S209。
步骤S201:确定目标作业中未处理作业的数量,并将数量作为作业未处 理数量。
步骤S202:确定处理目标作业的线程的数量,并将数量作为处理线程数 量。
需要说明的是,有关步骤S201及步骤S202的说明可以参见上述作业处理 方法实施例1,此处并不赘述。
步骤S203:判断若作业未处理数量是否小于预设未处理阈值,若是,则 执行步骤S204,若否,则执行步骤S206。
步骤S204:判断处理线程数量是否小于预设启动线程值,若是,则执行 步骤S205。
步骤S205:启动预设固定数量的新线程,触发新线程处理未处理作业。
其中,本步骤执行的前提条件为,作业未处理数量(JobNum)小于预设 未处理阈值(S),且处理线程数量(ThreadNum)小于预设启动线程值(D)。
具体地,在实施前,可以预先设置有作业未处理阈值,为了便于描述, 可以称为预设未处理阈值。需要说明的是,预设未处理阈值可以是根据作业 处理速度、***性能等各种实际因素而设置的数值,本申请并不具体限定。
作业未处理数量小于预设未处理阈值,则说明***中未处理的目标作业 还并未过多。同时,***中处理目标作业的处理线程数量小于预设启动线程 值,说明***中的当前线程并不多,因此,可以启动预先设置的固定数量的 新线程。其中,该预设固定数量可以是预设启动线程值D,当然,该预设固定 数量是***根据实际情况而设置的其他值。
步骤S206:判断处理线程数量是否小于预设线程阈值,若是,执行步骤 S207。
在实施前,预先设置有线程阈值,为了便于描述,可以将该阈值称为预 设线程阈值(M)。可以知道的是,***资源有限,若启动并维护较多的线程, 则会造成***的压力过大,影响***的运行速度,因此,使用预设线程阈值 来限制***启动及维护线程的数量。
其中,预设线程阈值可以是根据***性能等因素而设置的任意值,在不 同的应用场景中,该值可以不同。
步骤S207:判断线程预启动数量是否大于1,若是,执行步骤S208,否则, 执行步骤S209。
步骤S208:将线程预启动数量确定为第一目标数量,并启动第一目标数 量的新线程,触发新线程处理未处理作业。
其中,本步骤的执行前提是,作业未处理数量大于等于预设未处理阈值、 处理线程数量小于预设线程阈值、且线程预启动数量大于1。
其中,处理线程数量小于预设线程阈值,则表示***中处理线程的数量 并未达到限值,可以新增线程。
另外,线程预启动数量的确定方式为:(作业未处理数量-预设未处理阈 值)/预设线程增加间隔值;预设线程增加间隔值表示,作业未处理数量超过 预设未处理阈值的部分,为每线程增加间隔值的作业启动一个线程。
其中,线程增加间隔值(K)可以是大于或等于1的任意整数值,可选地, 为大于1的整数值。这样,本实现方式并非针对每个未处理作业均新增一个线 程,而是针对多个作业新增一个线程,防止新增的线程过多,给***带来较 大的线程维护压力。
例如,线程增加间隔值(K)为5,则表示需要计算作业未处理数量超过 预设未处理阈值的部分中,一共包含多少个5,从而启动多少个线程。
进一步,例如,作业未处理数量为25,预设未处理阈值为10,则作业未 处理数量超过预设未处理阈值的部分为25-10,即15,一共包含15/5,即3个5, 则需要启动3个新线程。
需要说明的是,线程预启动数量由作业未处理数量减去预设未处理阈值 后,再除以预设线程增加间隔值获得的。在实际应用中,获得的线程预启动 数量可能非整数值,则需要对结果取整运算。例如,作业未处理数量为23, 预设未处理阈值为10,线程增加间隔值为5,则(23-10)/5后为2.6,则取整运 算后获得的值为2,因此将2作为线程预启动数量。
通过以上方式获得的线程预启动数量,即为本实施例中需要启动的新线 程的数量。
步骤S209:将线程预启动数量与预设启动线程值的和值确定为第二目标 数量,并启动第二目标数量的新线程,触发新线程处理未处理作业。
总结来说,执行本步骤的前提条件为,作业未处理数量大于等于预设未 处理阈值、处理线程数量小于预设线程阈值、且线程预启动数量小于等于1。
其中,由以上可知,线程预启动数量是根据***中作业未处理数量及预 设值计算获得,在实施中,计算获得的值可能为整数值,也可能为非整数值, 可能为大于等于1的值,也可能为小于1的值。若线程预启动数量小于1,经过 取整运算后获得的值为0。为了防止启动数量为0的新线程,可以在线程预启 动数量的基础上,再加上预设启动线程值。
当然,在获得的线程预启动数量为小于1的情况下,还可以使用其他方式 来获得第二目标数量值,例如,直接将线程预启动数量确定为1等等。
由以上可知,步骤S208及本步骤启动多少新线程,决定因素之一为*** 中未处理作业的数量。由于***中作业的处理情况不同,则该值并不相同, 进而线程预启动数量也便不同。也就是说,步骤S208及本步骤,与步骤S205 不同,启动的线程数量不同。
参见图3,其示出了本申请提供的作业处理方法实施例3的流程。如图3所 示,本实施例可以具体包括以下步骤S301~步骤S310。本实施例与上述作业处 理方法实施例2相比,不同之处包括新增的步骤S306。当然,该步骤的执行具 有相应的前提条件,以下进行详细说明,有关本实施例中其他步骤的说明, 可以参见上述作业处理方法实施例2,本实施例并不做具体限定。
步骤S301:确定目标作业中未处理作业的数量,并将数量作为作业未处 理数量。
步骤S302:确定处理目标作业的线程的数量,并将数量作为处理线程数 量。
步骤S303:判断若作业未处理数量是否小于预设未处理阈值,若是,则 执行步骤S304,若否,则执行步骤S307。
步骤S304:判断处理线程数量是否小于预设启动线程值,若是,则执行 步骤S305,若否,则执行步骤S306。
步骤S305:启动预设固定数量的新线程,触发新线程处理未处理作业。
步骤S306:睡眠预设时长,返回步骤S301。
其中,若作业未处理数量小于预设未处理阈值、且处理线程数量大于等 于预设启动线程值,则执行本步骤,以睡眠预设时长后,重新返回步骤S301, 进行下一轮的作业处理方法。
需要说明的是,与步骤S305启动新线程不同,本步骤进行睡眠。这样设 置的优势在于,未处理的作业已经不多,且处理线程数量已较大,可以知道 的是,只要线程不退出,其可以在处理完毕当前的作业后,继续在作业池中 查找未处理的作业进行处理,因此,当前剩余的未处理作业,可能使用当前 的线程便可处理完毕,假设若再启动新线程,可能造成新线程资源的浪费。 因此,本步骤进行睡眠。
其中,睡眠的时长为预设值,可以是根据***具体情况而设置的任意值, 本实施例并不做具体限定。
步骤S307:判断处理线程数量是否小于预设线程阈值,若是,执行步骤 S308,否则,执行步骤S306。
步骤S308:判断线程预启动数量是否大于1,若是,执行步骤S309,否则, 执行步骤S310。
步骤S309:将线程预启动数量确定为第一目标数量,并启动第一目标数 量的新线程,触发新线程处理未处理作业。其中,线程预启动数量的确定方 式为:(作业未处理数量-预设未处理阈值)/预设线程增加间隔值。
步骤S310:将线程预启动数量与预设启动线程值的和值确定为第二目标 数量,并启动第二目标数量的新线程,触发新线程处理未处理作业。
其中,若作业未处理数量大于等于预设未处理阈值、处理线程数量大于 等于预设线程阈值,则执行上述步骤S306以进行睡眠。
具体来讲,虽然作业未处理数量大于等于预设未处理阈值,但是处理线 程数量大于等于预设线程阈值,说明***中目前存在的线程已经超过阈值, 则不能启动新线程,本实施例选择睡眠一段时间。
由以上可知,本实施例在作业未处理数量并不多,或者***中的线程已 经过多的特殊情况下,选择睡眠一段时间,以防止***中线程资源的浪费, 或者防止***的线程维护压力过大。
需要说明的是,本实施例中的步骤305、S309及S310之后,也可以重新返 回步骤S301,执行下一轮的作业处理方法。
在实际应用中,以上各个实施例中,触发新线程处理未处理作业的具体 实现方式可以包括以下步骤A1。
步骤A1:设置每个线程各自的处理作业数量,以使各个线程按照各自的 处理作业数量处理未处理作业。
具体地,本实现方式中,为每个新线程设置各自的处理作业数量,每个 新线程的处理作业数量可以相同,也可以不同。并且,该处理作业数量可以 是1,也可以为大于1的整数值。在为大于1的整数值的情况下,说明每个新线 程在退出之前,需要处理多个未处理作业。该种实现方式,可以提高作业的 处理效率。
需要说明的是,每个线程在全部处理完毕后,才可退出(死亡)。例如, 为线程设置的处理作业数量为3,则线程处理完毕3个未处理作业后,才可退 出。当然,若发现并不存在新的未处理作业,也可以退出(死亡)。
在实际应用中,以上各个实施例中确定目标作业中未处理作业的数量, 并将数量作为作业未处理数量的具体实现方式可以为:
在预设作业表中,统计作业状态为未处理的目标作业的第一记录数量, 并将第一记录数量确定为作业未处理数量。
具体地,预先设置有作业表,该预设作业表用于记录作业的各个参数信 息,具体包括:作业ID、作业类型、作业名称及作业状态。其中,作业ID, 用于唯一地标记一个作业;作业类型表示作业的类型,可以使用代码表示如 01、02等;作业名称为作业类型的名称,与作业类型相对应,如01表示批量 查询作业,02表示批量删除作业;作业状态包括:未处理、处理中、处理成 功及处理失败。
因此,若想要确定某种类型的目标作业中未处理作业的数量,便可从预 设作业表中,查找作业状态为未处理、且作业类型为该种类型的作业,并进 一步统计该种作业的记录数量。为了便于描述,将该记录的数量称为第一记 录数量,且可以称为作业未处理数量。
同样,以上各个实施例中确定处理目标作业的线程的数量,并将数量作 为处理线程数量的具体实现方式可以为:
在预设线程表中,统计执行状态为处理中且处理作业标记为目标作业的 第二记录数量,并将第二记录数量确定为处理线程数量。
具体地,预先设置有线程表,该预设线程表用于记录作业的各个参数信 息,具体包括:线程ID、作业类型、作业名称及线程执行状态。其中,线程ID 唯一表示***中的一个线程;作业类型表示线程处理的作业的类型,如上, 可以使用代码表示;作业名称表示作业类型的名称;线程执行状态表示线程 是否正在执行对作业的处理过程,具体包括:未执行、执行中、执行成功及 执行失败。
因此,若想要确定处理目标作业的线程的数量,可以在预设线程表中, 查找线程的类型为目标作业、并且线程执行状态为执行中的记录的数量,并 将该记录的数量称为第二记录数量,进一步也可以称为处理线程数量。
另外,本申请还可以设置作业线程表,该表用于记录为目标作业设置的 一些预设值,具体包括:作业类型、作业名称、预设启动线程值D、预设线程 阈值M、预设未处理阈值S及线程增加间隔值K。
以下对本申请提供的作业处理装置实施例进行介绍,需要说明的是,下 文有关作业处理装置实施例的说明可以参见上文提供的作业处理方法实施 例,以下并不赘述。
与上述作业处理方法实施例1相对应,本申请提供了一种作业处理装置实 施例1。参见图4,本实施例可以具体包括:作业未处理数量确定模块401、处 理线程数量确定模块402、新线程启动模块403及新线程处理作业模块404;其 中:
作业未处理数量确定模块401,用于确定目标作业中未处理作业的数量, 并将数量作为作业未处理数量;
处理线程数量确定模块402,用于确定处理目标作业的线程的数量,并将 数量作为处理线程数量;
新线程启动模块403,用于基于作业未处理数量与预设未处理阈值之间的 大小关系、以及处理线程数量与预设启动线程值之间的大小关系,依据不同 的线程启动规则,启动相应数量的新线程;
新线程处理作业模块404,用于触发新线程处理未处理作业;
其中,预设未处理阈值,用于表示若作业未处理数量达到该阈值,则需 要增加新线程;预设启动线程值,用于表示为目标作业启动的线程的最低值。
由以上可知,本申请提供了一种作业处理装置实施例,首先作业未处理 数量确定模块401确定出***中某种作业中未处理作业的数量,及处理线程数 量确定模块402确定出当前处理该种作业的线程的数量,然后新线程启动模块 403基于未处理作业的数量与预设的作业未处理阈值之间的大小关系、以及当 前线程的数量与预设的线程启动阈值之间的大小关系,来确定不同的线程启 动规则,并通过不同的线程启动规则,来启动数量不同的新线程,新线程处 理作业模块404以使新线程来处理未处理的作业。可见,相较于现有的启动某 个固定数量的线程,且为线程分配固定作业处理的技术,本实施例可以使用 预设的未处理作业阈值及预设的线程启动阈值,分别确定***中未处理作业 的情况及已存在线程的数量情况,针对不同情况启动数量不同的新线程,作 业处理效果更好,且避免给***造成较大的线程维护压力。
在实际应用中,上述的作业处理装置中,新线程启动模块403可以具体包 括:第一新线程启动子模块、第二新线程启动子模块及第三新线程启动子模 块;其中:
第一新线程启动子模块,用于若作业未处理数量小于预设未处理阈值、 且处理线程数量小于预设启动线程值,则启动预设固定数量的新线程;
第二新线程启动子模块,用于若作业未处理数量大于等于预设未处理阈 值、处理线程数量小于预设线程阈值、且线程预启动数量大于1,则将线程预 启动数量确定为第一目标数量,并启动第一目标数量的新线程;
第三新线程启动子模块,用于若作业未处理数量大于等于预设未处理阈 值、处理线程数量小于预设线程阈值、且线程预启动数量小于等于1,则将线 程预启动数量与预设启动线程值的和值确定为第二目标数量,并启动第二目 标数量的新线程;
其中,线程预启动数量的确定方式为:(作业未处理数量-预设未处理阈 值)/预设线程增加间隔值;预设线程增加间隔值表示,作业未处理数量超过 预设未处理阈值的部分,为每线程增加间隔值的作业启动一个线程。
另外,上述的作业处理装置还可以包括:第四新线程启动子模块及第五 新线程启动子模块;其中:
第四新线程启动子模块,用于若作业未处理数量小于预设未处理阈值、 且处理线程数量大于等于预设启动线程值,则睡眠预设时长后,重新触发第 一新线程启动子模块。
第五新线程启动子模块,用于若作业未处理数量大于等于预设未处理阈 值、处理线程数量大于等于预设线程阈值,则睡眠预设时长后,重新触发第 一新线程启动子模块。
在实施中,上述的作业处理装置中,新线程处理作业模块404可以具体包 括:新线程处理作业子模块;其中:
新线程处理作业子模块,用于设置每个线程各自的处理作业数量,以使 各个线程按照各自的处理作业数量处理未处理作业。
在实际应用中,作业未处理数量确定模块401可以具体包括:表确定未处 理作业数量子模块;其中:
表确定未处理作业数量子模块,用于在预设作业表中,统计作业状态为 未处理的目标作业的第一记录数量,并将第一记录数量确定为作业未处理数 量;
处理线程数量确定模块402可以具体包括:表确定处理线程数量子模块; 其中:
表确定处理线程数量子模块,用于在预设线程表中,统计执行状态为处 理中且处理作业标记为目标作业的第二记录数量,并将第二记录数量确定为 处理线程数量。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个 实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似 的部分互相参见即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用 来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗 示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、 “包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要 素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列 出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要 素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除 在包括上述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用 本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易 见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下, 在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例, 而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种作业处理方法,其特征在于,包括:
确定目标作业中未处理作业的数量,并将所述数量作为作业未处理数量;
确定处理所述目标作业的线程的数量,并将所述数量作为处理线程数量;
基于所述作业未处理数量与预设未处理阈值之间的大小关系、以及所述处理线程数量与预设启动线程值之间的大小关系,依据不同的线程启动规则,启动相应数量的新线程;
触发所述新线程处理所述未处理作业;
其中,所述预设未处理阈值,用于表示若所述作业未处理数量达到该阈值,则需要增加新线程;所述预设启动线程值,用于表示为所述目标作业启动的线程的最低值。
2.根据权利要求1所述的作业处理方法,其特征在于,所述基于所述作业未处理数量与预设未处理阈值之间的大小关系、以及所述处理线程数量与预设启动线程值之间的大小关系,依据不同的线程启动规则,启动相应数量的新线程,包括:
若所述作业未处理数量小于所述预设未处理阈值、且所述处理线程数量小于所述预设启动线程值,则启动预设固定数量的新线程;
若所述作业未处理数量大于等于所述预设未处理阈值、所述处理线程数量小于预设线程阈值、且线程预启动数量大于1,则将所述线程预启动数量确定为第一目标数量,并启动所述第一目标数量的新线程;
若所述作业未处理数量大于等于所述预设未处理阈值、所述处理线程数量小于预设线程阈值、且线程预启动数量小于等于1,则将所述线程预启动数量与所述预设启动线程值的和值确定为第二目标数量,并启动所述第二目标数量的新线程;
其中,所述线程预启动数量的确定方式为:(作业未处理数量-预设未处理阈值)/预设线程增加间隔值;所述预设线程增加间隔值表示,所述作业未处理数量超过所述预设未处理阈值的部分,为每所述线程增加间隔值的作业启动一个线程。
3.根据权利要求2所述的作业处理方法,其特征在于,该方法还包括:
若所述作业未处理数量小于所述预设未处理阈值、且所述处理线程数量大于等于所述预设启动线程值,则睡眠预设时长后,重新确定目标作业中未处理作业的数量,并将所述数量作为作业未处理数量;
若所述作业未处理数量大于等于所述预设未处理阈值、所述处理线程数量大于等于所述预设线程阈值,则睡眠预设时长后,重新确定目标作业中未处理作业的数量,并将所述数量作为作业未处理数量。
4.根据权利要求1所述的作业处理方法,其特征在于,所述触发所述新线程处理所述未处理作业,包括:
设置每个所述线程各自的处理作业数量,以使各个所述线程按照各自的处理作业数量处理所述未处理作业。
5.根据权利要求1所述的作业处理方法,其特征在于,所述确定目标作业中未处理作业的数量,并将所述数量作为作业未处理数量,包括:
在预设作业表中,统计作业状态为未处理的目标作业的第一记录数量,并将所述第一记录数量确定为作业未处理数量;
所述确定处理所述目标作业的线程的数量,并将所述数量作为处理线程数量,包括:
在预设线程表中,统计执行状态为处理中且处理作业标记为目标作业的第二记录数量,并将所述第二记录数量确定为处理线程数量。
6.一种作业处理装置,其特征在于,包括:
作业未处理数量确定模块,用于确定目标作业中未处理作业的数量,并将所述数量作为作业未处理数量;
处理线程数量确定模块,用于确定处理所述目标作业的线程的数量,并将所述数量作为处理线程数量;
新线程启动模块,用于基于所述作业未处理数量与预设未处理阈值之间的大小关系、以及所述处理线程数量与预设启动线程值之间的大小关系,依据不同的线程启动规则,启动相应数量的新线程;
新线程处理作业模块,用于触发所述新线程处理所述未处理作业;
其中,所述预设未处理阈值,用于表示若所述作业未处理数量达到该阈值,则需要增加新线程;所述预设启动线程值,用于表示为所述目标作业启动的线程的最低值。
7.根据权利要求6所述的作业处理装置,其特征在于,所述新线程启动模块,包括:
第一新线程启动子模块,用于若所述作业未处理数量小于所述预设未处理阈值、且所述处理线程数量小于所述预设启动线程值,则启动预设固定数量的新线程;
第二新线程启动子模块,用于若所述作业未处理数量大于等于所述预设未处理阈值、所述处理线程数量小于预设线程阈值、且线程预启动数量大于1,则将所述线程预启动数量确定为第一目标数量,并启动所述第一目标数量的新线程;
第三新线程启动子模块,用于若所述作业未处理数量大于等于所述预设未处理阈值、所述处理线程数量小于预设线程阈值、且线程预启动数量小于等于1,则将所述线程预启动数量与所述预设启动线程值的和值确定为第二目标数量,并启动所述第二目标数量的新线程;
其中,所述线程预启动数量的确定方式为:(作业未处理数量-预设未处理阈值)/预设线程增加间隔值;所述预设线程增加间隔值表示,所述作业未处理数量超过所述预设未处理阈值的部分,为每所述线程增加间隔值的作业启动一个线程。
8.根据权利要求7所述的作业处理装置,其特征在于,该装置还包括:
第四新线程启动子模块,用于若所述作业未处理数量小于所述预设未处理阈值、且所述处理线程数量大于等于所述预设启动线程值,则睡眠预设时长后,重新触发第一新线程启动子模块;
第五新线程启动子模块,用于若所述作业未处理数量大于等于所述预设未处理阈值、所述处理线程数量大于等于所述预设线程阈值,则睡眠预设时长后,重新触发第一新线程启动子模块。
9.根据权利要求6所述的作业处理装置,其特征在于,所述新线程处理作业模块包括:
新线程处理作业子模块,用于设置每个所述线程各自的处理作业数量,以使各个所述线程按照各自的处理作业数量处理所述未处理作业。
10.根据权利要求6所述的作业处理装置,其特征在于,所述作业未处理数量确定模块包括:
表确定未处理作业数量子模块,用于在预设作业表中,统计作业状态为未处理的目标作业的第一记录数量,并将所述第一记录数量确定为作业未处理数量;
所述处理线程数量确定模块包括:
表确定处理线程数量子模块,用于在预设线程表中,统计执行状态为处理中且处理作业标记为目标作业的第二记录数量,并将所述第二记录数量确定为处理线程数量。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510763240.1A CN105389208B (zh) | 2015-11-10 | 2015-11-10 | 作业处理方法及装置 |
SG11201610718YA SG11201610718YA (en) | 2015-11-10 | 2015-12-25 | Job processing method and device |
PCT/CN2015/098826 WO2016188102A1 (zh) | 2015-11-10 | 2015-12-25 | 作业处理方法及装置 |
EP15893170.9A EP3147785B1 (en) | 2015-11-10 | 2015-12-25 | Task processing method and device |
ES15893170T ES2856971T3 (es) | 2015-11-10 | 2015-12-25 | Método y dispositivo de procesamiento de trabajos |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510763240.1A CN105389208B (zh) | 2015-11-10 | 2015-11-10 | 作业处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105389208A CN105389208A (zh) | 2016-03-09 |
CN105389208B true CN105389208B (zh) | 2018-12-14 |
Family
ID=55421515
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510763240.1A Active CN105389208B (zh) | 2015-11-10 | 2015-11-10 | 作业处理方法及装置 |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP3147785B1 (zh) |
CN (1) | CN105389208B (zh) |
ES (1) | ES2856971T3 (zh) |
SG (1) | SG11201610718YA (zh) |
WO (1) | WO2016188102A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107341050B (zh) * | 2016-04-28 | 2022-12-27 | 北京京东尚科信息技术有限公司 | 基于动态线程池的服务处理方法和装置 |
CN109492024A (zh) * | 2018-10-26 | 2019-03-19 | 平安科技(深圳)有限公司 | 数据处理方法、装置、计算机设备以及存储介质 |
CN111367627B (zh) * | 2018-12-26 | 2024-02-13 | 三六零科技集团有限公司 | 一种读写磁盘任务的处理方法和装置 |
CN110321206A (zh) * | 2019-06-26 | 2019-10-11 | 北京金山安全软件有限公司 | 一种服务管理方法、装置、电子设备及存储介质 |
CN111078386A (zh) * | 2019-12-30 | 2020-04-28 | 北京奇艺世纪科技有限公司 | 一种分布式调度***的控制方法及控制装置 |
CN111444225B (zh) * | 2020-03-27 | 2024-03-26 | 中国人民银行清算总中心 | 通用指标解析方法及装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7467390B2 (en) * | 2003-04-01 | 2008-12-16 | International Business Machines Corporation | Enhanced staged event-driven architecture |
CN100347675C (zh) * | 2004-06-29 | 2007-11-07 | 北京大学 | 应用服务器的性能优化方法 |
US8239872B2 (en) * | 2008-12-11 | 2012-08-07 | Hewlett-Packard Development Company, L.P. | Method and system for controlling distribution of work items to threads in a server |
CN102147750A (zh) * | 2011-01-27 | 2011-08-10 | 中国农业银行股份有限公司 | 作业处理方法和*** |
CN102393822B (zh) * | 2011-11-30 | 2014-03-12 | 中国工商银行股份有限公司 | 批量调度***及方法 |
CN103543987B (zh) * | 2012-07-11 | 2016-09-28 | Sap欧洲公司 | 用于高效并行运行的反馈驱动调节 |
CN104407922B (zh) * | 2014-10-29 | 2019-03-01 | 中国建设银行股份有限公司 | 一种异步批处理调度方法及*** |
-
2015
- 2015-11-10 CN CN201510763240.1A patent/CN105389208B/zh active Active
- 2015-12-25 EP EP15893170.9A patent/EP3147785B1/en active Active
- 2015-12-25 SG SG11201610718YA patent/SG11201610718YA/en unknown
- 2015-12-25 ES ES15893170T patent/ES2856971T3/es active Active
- 2015-12-25 WO PCT/CN2015/098826 patent/WO2016188102A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
SG11201610718YA (en) | 2017-02-27 |
CN105389208A (zh) | 2016-03-09 |
WO2016188102A1 (zh) | 2016-12-01 |
EP3147785A4 (en) | 2017-08-02 |
ES2856971T3 (es) | 2021-09-28 |
EP3147785B1 (en) | 2021-02-24 |
EP3147785A1 (en) | 2017-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105389208B (zh) | 作业处理方法及装置 | |
Phillips et al. | Online load balancing and network flow | |
Sourd | New exact algorithms for one-machine earliness-tardiness scheduling | |
CN106528065B (zh) | 一种线程获取方法及设备 | |
CN103744730A (zh) | 一种任务调度方法和装置 | |
CN106325989A (zh) | 任务执行方法及装置 | |
Mitchell | How high a degree is high enough for high order finite elements? | |
CN106372977A (zh) | 一种虚拟账户的处理方法和设备 | |
CN109240811A (zh) | 一种任务执行方法和装置 | |
Chen | A tailored non-linear fluctuation smoothing rule for semiconductor manufacturing factory scheduling | |
CN107291534A (zh) | 异步任务并发处理方法和*** | |
Li et al. | Heuristic for no-wait flow shops with makespan minimization based on total idle-time increments | |
CN105574407A (zh) | 一种共享的处理方法和装置 | |
Almutairi et al. | Performance of selection hyper-heuristics on the extended hyflex domains | |
Pontual et al. | Toward practical authorization-dependent user obligation systems | |
Pinedo | A note on the two machine job shop with exponential processing times | |
Baskar et al. | Optimization of makespan in job and machine priority environment | |
Kong et al. | Optimal Worker Assignment under Limited-Cycled Model with Multiple Periods-Consecutive Delay Times is Limited | |
JP2005071171A (ja) | バッチジョブ実行制御方法 | |
Yaghubian et al. | Dry kiln scheduling in furniture production | |
CN115237576A (zh) | 一种串并行混合处理方法、装置、设备及介质 | |
US20180165453A1 (en) | Malicious code deactivating apparatus and method of operating the same | |
CN103886060B (zh) | 用于联机分析处理分区的数据处理方法和装置 | |
CN106559445B (zh) | 一种数据处理方法及装置 | |
KR102342788B1 (ko) | 트랜잭션의 병렬적 실행을 지원하는 방법, 이를 이용하는 블록체인 노드 및 프로그램 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |