CN111767125B - 任务执行方法、装置、电子设备、存储介质 - Google Patents
任务执行方法、装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN111767125B CN111767125B CN202010541239.5A CN202010541239A CN111767125B CN 111767125 B CN111767125 B CN 111767125B CN 202010541239 A CN202010541239 A CN 202010541239A CN 111767125 B CN111767125 B CN 111767125B
- Authority
- CN
- China
- Prior art keywords
- task
- executed
- timing
- tasks
- thread
- 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/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
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- 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/5038—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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/484—Precedence
-
- 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
-
- 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/5021—Priority
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
Abstract
本发明公开了任务执行方法、装置、电子设备、存储介质。任务执行方法包括:确定待执行的定时任务的类型;若待执行的定时任务为一级任务,则在到达待执行的定时任务的开始执行时刻的情况下,调用线程池中的空闲线程以执行待执行的定时任务;若待执行的定时任务为二级任务,则判断线程池中空闲线程的第一数量是否大于多个定时任务中未执行的一级任务的第二数量,在第一数量大于第二数量且到达待执行的定时任务的开始执行时刻的情况下,调用空闲线程以执行待执行的定时任务。从而能够在线程资源不足的情况下,尽可能保障定时任务执行的实时性。
Description
技术领域
本发明涉及计算机技术领域,特别涉及任务执行方法、装置、电子设备、存储介质。
背景技术
业务系统会有各种各样的定时任务,例如,每天9点的打卡提醒任务、每个月定时统计工时任务、工作日的周一、周二、周五的开会提醒任务等。相关技术中,一般通过调用一个创建好的线程池内的线程定时地去执行配置好的定时任务,由于线程无法对任务进行区别对待,所有的任务只能公平地抢占线程资源。而一个业务系统包含大量的定时任务,如果需要执行的定时任务非常多而线程资源不足的情况下,部分定时任务就无法按照既定的计划被执行,会被延时执行,这种情况下任务执行的实时性无法得到保障。
发明内容
本发明提供一种任务执行方法、装置、电子设备、存储介质,以在线程资源不足的情况下,尽可能保障定时任务执行的实时性。
具体地,本发明是通过如下技术方案实现的:
第一方面,提供一种任务执行方法,应用于业务系统,所述业务系统包含多个定时任务;
所述任务执行方法包括:
确定待执行的定时任务的类型;
若所述待执行的定时任务为一级任务,则在到达所述待执行的定时任务的开始执行时刻的情况下,调用线程池中的空闲线程以执行所述待执行的定时任务;
若所述待执行的定时任务为二级任务,则判断所述线程池中空闲线程的第一数量是否大于所述多个定时任务中未执行的一级任务的第二数量,在所述第一数量大于所述第二数量且到达所述待执行的定时任务的开始执行时刻的情况下,调用所述空闲线程以执行所述待执行的定时任务,其中,所述一级任务的优先级高于所述二级任务的优先级。
可选地,若类型为二级任务的待执行的定时任务的第三数量为n个,n≥2,调用所述空闲线程以执行所述待执行的定时任务,包括:
判断所述第三数量是否大于所述第一数量与所述第二数量的差值i,i≥0;
在所述第三数量大于所述差值的情况下,调用线程池中的i个空闲线程以执行i个待执行的定时任务;
在所述第三数量不大于所述差值的情况下,调用所述线程池中的n个空闲线程以执行n个待执行的定时任务。
可选地,调用线程池中的i个空闲线程以执行i个待执行的定时任务,包括:
按照开始执行时刻的先后顺序对n个待执行的定时任务进行排序;
从n个待执行的定时任务中选取排序靠前的i个待执行的定时任务,并调用i个空闲线程以执行所述i个待执行的定时任务。
可选地,所述空闲线程包含正在执行预执行完毕的定时任务的线程,所述预执行完毕的定时任务为正在执行的定时任务中执行结束时刻早于所述待执行的定时任务的开始执行时刻的定时任务。
可选地,若所述第一数量不大于所述第二数量,所述任务执行方法还包括:
在正在执行的定时任务的执行时长大于时长阈值的情况下,停止执行所述正在执行的定时任务以释放线程。
第二方面,提供一种任务执行装置,应用于业务系统,所述业务系统包含多个定时任务;
所述任务执行装置包括:
确定模块,用于确定待执行的定时任务的类型;
调用模块,用于在所述待执行的定时任务为一级任务且到达所述待执行的定时任务的开始执行时刻的情况下,调用线程池中的空闲线程以执行所述待执行的定时任务;
判断模块,用于在所述待执行的定时任务为二级任务的情况下,判断所述线程池中空闲线程的第一数量是否大于所述多个定时任务中未执行的一级任务的第二数量,并在所述第一数量大于所述第二数量且到达所述待执行的定时任务的开始执行时刻的情况下,调用所述调用模块,以调用所述空闲线程并执行所述待执行的定时任务,其中,所述一级任务的优先级高于所述二级任务的优先级。
可选地,若类型为二级任务的待执行的定时任务的第三数量为n个,n≥2,所述调用模块包括:
判断单元,用于判断所述第三数量是否大于所述第一数量与所述第二数量的差值i,i≥0,
调用单元,用于在所述第三数量大于所述差值的情况下,调用线程池中的i个空闲线程以执行i个待执行的定时任务;
所述调用单元,还用于在所述第三数量不大于所述差值的情况下,调用所述线程池中的n个空闲线程以执行n个待执行的定时任务。
可选地,在调用线程池中的i个空闲线程以执行i个待执行的定时任务时,所述调用单元用于:
按照开始执行时刻的先后顺序对n个待执行的定时任务进行排序;
从n个待执行的定时任务中选取排序靠前的i个待执行的定时任务,并调用i个空闲线程以执行所述i个待执行的定时任务。
可选地,所述空闲线程包含正在执行预执行完毕的定时任务的线程,所述预执行完毕的定时任务为正在执行的定时任务中执行结束时刻早于所述待执行的定时任务的开始执行时刻的定时任务。
可选地,所述任务执行装置还包括:
停止模块,用于在所述第一数量不大于所述第二数量且正在执行的定时任务的执行时长大于时长阈值的情况下,停止执行所述正在执行的定时任务以释放线程。
第三方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的任务执行方法。
第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的任务执行方法的步骤。
本发明的实施例提供的技术方案可以包括以下有益效果:
本发明实施例中,即便在一个业务系统中配置更多的定时任务,定时任务的数量大于线程池中线程的数量,也不会影响一级任务执行的实时性,且无需扩展线程资源,节省了运维成本。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是本发明一示例性实施例示出的一种任务执行方法的流程图;
图2是本发明一示例性实施例示出的另一种任务执行方法的流程图;
图3是本发明一示例性实施例示出的一种任务执行装置的模块示意图;
图4是本发明一示例性实施例示出的一种电子设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
业务系统会有各种各样的定时任务,例如,每天9点的打卡提醒任务、每个月定时统计工时任务、工作日的周一、周二、周五的开会提醒任务等。为了满足这些需求,软件开发者通常有两种方案:
一种方案是在业务系统开发过程中,根据具体的需求自定义开发定时调度程序;该方式适用于一些简单场景,在很多复杂场景下就显得力不从心了,例如,无法实现故障恢复和系统重启任务的调度,且任务调度策略较复杂的情形下,会大大增加业务系统开发和维护的成本;
另一种方案是借助定时调度框架去处理定时任务,例如,Quartz就是一款非常流行且轻巧稳定的调度框架,该框架使用非常简单,可以灵活地配置调度策略,例如按照分钟、天、周、月等调度,并且支持故障恢复和系统重启任务的调度。
相关技术中,调度框架的调度原理是在一个创建好的线程池内定时地去执行配置好的任务。以Quartz(一个开源作业调度框架)为例,Quartz在初始化的时候会创建一个线程池,并且循环地查询当前时刻是否有待执行的任务,当有空闲线程的时候就会把待执行的任务提交给它执行,若没有空闲线程,此时该任务只能等待。
相关技术中,调度框架在进行任务调度时,无法对任务进行区别对待,所有的任务只能公平地抢占线程资源。而一个业务系统包含大量的定时任务,如果需要执行的定时任务非常多而线程资源不足,这时候部分定时任务就无法按照既定的计划被执行,会被延时执行,这种情况下任务执行的实时性无法得到保障。
基于上述情况,本发明实施例提供一种任务执行方法,在线程资源不足的情况下,尽可能地确保定时任务执行的实时性。
图1是本发明一示例性实施例示出的一种任务执行方法的流程图,应用于业务系统,参见图1,该任务执行方法包括以下步骤:
步骤100、获取待执行的定时任务。
业务系统一般包括多个定时任务,每个定时任务预先配置了任务开始执行时刻。其中,任务开始执行时刻可以是某个时间点;对于周期性任务来说,任务开始执行时刻也可以是每个周期任务执行的起点时刻。
待执行的定时任务为开始执行时刻在距离当前时刻一时间段内的定时任务,举例来说,假设将开始执行时刻在距离当前时刻2分钟(可根据实际需求自行设置)内的定时任务确定为待执行的定时任务,若当前时刻为周一13:59,定时任务a的开始执行时刻为每周一14:00,定时任务b的开始执行时刻为每周一16:00,定时任务c的开始执行时刻为每天13:00,定时任务a的开始执行时刻在[13:59,14:01]范围之内,则将定时任务a确定为待执行的定时任务。
步骤101、确定待执行的定时任务的类型。
按照对定时任务的执行时间的要求将定时任务分为两类:一类是需要严格按照预先配置的开始执行时刻执行的一级任务,例如,闹铃任务;另一类是可以延迟执行的二级任务,例如,定时统计工时任务。其中,一级任务的优先级高于二级任务的优先级。在业务系统开发维护过程中,用户可根据实际需求配置定时任务的类型。
步骤101中,若确定待执行的定时任务的类型为二级任务,该任务可以被延迟,是否执行该任务,需要经过步骤102的判断。
步骤102、判断线程池中空闲线程的第一数量是否大于多个定时任务中未执行的一级任务的第二数量。
其中,执行步骤102之前需要创建一个线程池,线程池中包含多个线程。线程池的创建过程可参考相关技术中调度框架创建线程池的过程,具体实现方式,此处不再赘述。
为了确保一级任务能够及时被执行,需要保证线程池中的空闲线程的数量始终大于等于业务系统未执行的一级任务的数量,以便于在需要执行一级任务的情况下,有足够的空闲线程执行一级任务。
步骤102中,若判断为是,说明目前线程池中空闲线程较多,可执行类型为二级任务的待执行的定时任务,则执行步骤103。
步骤103、在到达待执行的定时任务的开始执行时刻的情况下,调用线程池中的空闲线程以执行类型为二级任务的待执行的定时任务。
步骤102中,若判断为否,说明目前线程池中空闲线程的数量只够用于执行一级任务的线程数量,空闲线程不能用于执行类型为二级任务的待执行的定时任务,该任务需要延迟执行,则继续判断第一数量是否大于第二数量。
经过步骤102的判断可以确保线程池中的空闲线程始终是大于等于未执行的一级任务的数量的,确保一级任务可以及时执行。
步骤101中,若确定待执行的定时任务的类型为一级任务,则执行步骤104。
步骤104、在到达待执行的定时任务的开始执行时刻的情况下,调用线程池中的空闲线程以执行类型为一级任务的待执行的定时任务。
还是以上述任务a~任务c为例,假设当前时刻为周一14:00,若定时任务a被配置为一级任务,当前时刻为周一14:00时,则直接调用空闲线程并执行任务a;若定时任务b被配置为二级任务,假设当前线程池中有2个空闲线程,而未执行的一级任务有2个,为了确保其他一级任务能够及时执行,即便有空闲的线程也不执行定时任务b,除非空闲线程数量大于2个,才执行定时任务b。从而,平衡了两类定时任务的执行时间,即便在线程资源不足的情况下,也能确保一级任务始终能够及时执行,在空闲线程充足的情况下,则可执行二级任务。
在一个实施例中,空闲线程可以是步骤102中在进行数量判断时,线程池中空闲线程的实际数量。举例来说,若线程池有16个线程,其中,5个正在执行定时任务,空闲线程为11个,步骤102中则判断11是否大于未执行的一级任务的数量。
在另一个实施例中,还可以将正在执行预执行完毕的定时任务的线程的数量算入在空闲线程的数量中,预执行完毕的定时任务的执行结束时刻早于待执行的定时任务的开始执行时刻。举例来说,若线程池有16个线程,5个正在执行定时任务,其中,2个定时任务的执行结束时刻为13:59:56,早于待执行的定时任务的开始执行时刻14:00,则可将这2个线程认定为空闲线程,步骤102则判断13(11+2)是否大于未执行的一级任务的数量。
其中,定时任务的执行结束时刻可以是预设的结束时刻,也即用户自定义的时刻;也可以是强制执行时刻,例如,在空闲线程较少的情况下,第一数量小于等于第二数量,若某个或多个正在执行的定时任务的执行时长超过时长阈值,则将当前时刻确定为该定时任务的强制结束时刻,停止执行该定时任务,释放线程资源。
为了便于理解本说明书实施例,下面举个具体应用场景的例子:
假如某个业务系统中使用的线程池中线程的总数量为16个,该业务系统配置25个定时任务,其中5个为一级任务,20个为二级任务。显而易见,25个定时任务无差别地去抢占16个线程资源,一级任务的执行实时性无法得到保障,而使用本发明实施例的方法,二级任务的最大同时执行数量为11,当某个或某几个二级任务需要被执行但正在执行的二级任务的个数已经超过11,该某个或某几个二级任务就不会被执行,这样可以确保任意时刻的一级任务都有充足的5个线程,从而保证了一级任务的调度实时性。进而,即便在一个业务系统中配置更多的定时任务,定时任务的数量大于线程池中线程的数量,也不会影响一级任务执行的实时性,且无需扩展线程资源,节省了运维成本。
图2是本发明一示例性实施例示出的另一种任务执行方法的流程图,本实施例与图1示出的任务执行方法基本相同,不同之处在于,若待执行的定时任务的数量为多个的情况下,本实施例中,在判断空闲线程的数量大于未执行的一级任务的数量的情况下,还需进一步比较类型为二级任务的待执行的定时任务的数量和空闲线程的数量与未执行的一级任务的数量的差值,具体的,参见图2,方法包括以下步骤:
步骤200、获取z个待执行的定时任务。
业务系统一般包括多个定时任务,每个定时任务预先配置了任务开始执行时刻。其中,任务开始执行时刻可以是某个时间点;对于周期性任务来说,任务开始执行时刻也可以是每个周期任务执行的起点时刻。
待执行的定时任务为开始执行时刻在距离当前时刻一时间段内的定时任务。举例来说,表1为一个业务系统的部分定时任务的配置表,假设将开始执行时刻在距离当前时刻1分钟(可根据实际需求自行设置)内的定时任务确定为待执行的定时任务,若当前时刻为周一13:59:55,任务a、任务b和任务c的开始执行时刻均在[13:59:55,14:00:55]范围之内,可以将任务a、任务b和任务d确定为待执行的定时任务。
表1
步骤201、确定z个待执行的定时任务的类型。
步骤201中,若z个待执行的定时任务中存在n个二级任务,n≥2,对于n个二级任务,则执行步骤202。此时,z个待执行的定时任务中存在z-n个一级任务,对于z-n个一级任务,执行步骤205、调用z-n个空闲线程以执行z-n个类型为一级任务的待执行的定时任务。
以表1示出的业务系统的定时任务的配置表为例,若任务a、任务b和任务d为待执行的定时任务,由于任务a被配置为一级任务,在到达任务a的开始执行时刻,则直接调用空闲线程执行任务a。而任务b和任务d为二级任务,需要经过下述步骤202和步骤203的判断决定立即执行任务还是延迟执行任务。
步骤202、判断线程池中空闲线程的第一数量是否大于多个定时任务中未执行的一级任务的第二数量。
步骤202中,若判断为是,说明目前线程池中空闲线程较多,至少可以执行部分类型为二级任务的待执行的定时任务,但还需要通过步骤203确定执行类型为二级任务的待执行的定时任务的数量。
在一个实施例中,可优先考虑待执行的定时任务,本实施例中,步骤202中未执行的一级任务的第二数量为待执行的定时任务中减去其中类型为二级任务的定时任务的数量,也即第二数量等于z-n,此情况下,为类型为一级任务的待执行的定时任务分配了空闲线程之后,若还有剩余的空闲线程,则执行步骤203为类型为二级任务的待执行的定时任务中的全部或部分分配空闲线程。
在另一个实施例中,可优先考虑业务系统中所有的一级任务,本实施例中,步骤202中未执行的一级任务的第二数量为业务系统中所有一级任务的数量与正在执行的一级任务的数量的差值,也即为类型为一级任务的待执行的定时任务分配了空闲线程之后,若还有剩余的空闲线程,只在剩余的空闲线程的数量大于业务系统中所有一级任务的数量与正在执行的一级任务的数量的差值的情况下,执行步骤203为类型为二级任务的待执行的定时任务中的全部或部分分配空闲线程。
步骤203、判断n是否大于空闲线程的第一数量与未执行的一级任务的第二数量的差值i。
其中,i≥0;
步骤203中,若判断为否,说明空闲线足够多,可以执行n个类型为二级任务的待执行的定时任务,则执行步骤204。
步骤204、调用线程池中的n个空闲线程以执行n个类型为二级任务的待执行的定时任务。
步骤203中,若判断为是,说明空闲线程的数量不多,只能执行n个待执行的定时任务中的i个任务,则执行步骤204’。
步骤204’、调用线程池中的i个空闲线程以执行i个待执行的定时任务。
其中,i个待执行的定时任务是从n个待执行的定时任务中选择出来的,可以但不限于按照任务的开始执行时刻作为选择条件,具体的:按照开始执行时刻的先后顺序对n个待执行的定时任务进行排序,从n个待执行的定时任务中选取排序靠前的i个待执行的定时任务,并调用i个空闲线程以执行所述i个待执行的定时任务。
与前述任务执行方法实施例相对应,本发明还提供了任务执行装置的实施例。
图3是本发明一示例性实施例示出的一种任务执行装置的模块示意图,应用于业务系统,所述业务系统包含多个定时任务;
所述任务执行装置包括:
确定模块31,用于确定待执行的定时任务的类型;
调用模块32,用于在所述待执行的定时任务为一级任务且到达所述待执行的定时任务的开始执行时刻的情况下,调用线程池中的空闲线程以执行所述待执行的定时任务;
判断模块33,用于在所述待执行的定时任务为二级任务的情况下,判断所述线程池中空闲线程的第一数量是否大于所述多个定时任务中未执行的一级任务的第二数量,并在所述第一数量大于所述第二数量且到达所述待执行的定时任务的开始执行时刻的情况下,调用所述调用模块32,以调用所述空闲线程并执行所述待执行的定时任务,其中,所述一级任务的优先级高于所述二级任务的优先级。
可选地,若类型为二级任务的待执行的定时任务的第三数量为n个,n≥2,所述调用模块包括:
判断单元,用于判断所述第三数量是否大于所述第一数量与所述第二数量的差值i,i≥0,
调用单元,用于在所述第三数量大于所述差值的情况下,调用线程池中的i个空闲线程以执行i个待执行的定时任务;
所述调用单元,还用于在所述第三数量不大于所述差值的情况下,调用所述线程池中的n个空闲线程以执行n个待执行的定时任务。
可选地,在调用线程池中的i个空闲线程以执行i个待执行的定时任务时,所述调用单元用于:
按照开始执行时刻的先后顺序对n个待执行的定时任务进行排序;
从n个待执行的定时任务中选取排序靠前的i个待执行的定时任务,并调用i个空闲线程以执行所述i个待执行的定时任务。
可选地,所述空闲线程包含正在执行预执行完毕的定时任务的线程,所述预执行完毕的定时任务为正在执行的定时任务中执行结束时刻早于所述待执行的定时任务的开始执行时刻的定时任务。
可选地,所述任务执行装置还包括:
停止模块,用于在所述第一数量不大于所述第二数量且正在执行的定时任务的执行时长大于时长阈值的情况下,停止执行所述正在执行的定时任务以释放线程。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
图4是本发明一示例实施例示出的一种电子设备的结构示意图,示出了适于用来实现本发明实施方式的示例性电子设备40的框图。图4显示的电子设备40仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图4所示,电子设备40可以以通用计算设备的形式表现,例如其可以为服务器设备。电子设备40的组件可以包括但不限于:上述至少一个处理器41、上述至少一个存储器42、连接不同系统组件(包括存储器42和处理器41)的总线43。
总线43包括数据总线、地址总线和控制总线。
存储器42可以包括易失性存储器,例如随机存取存储器(RAM)421和/或高速缓存存储器422,还可以进一步包括只读存储器(ROM)423。
存储器42还可以包括具有一组(至少一个)程序模块424的程序工具425(或实用工具),这样的程序模块424包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
处理器41通过运行存储在存储器42中的计算机程序,从而执行各种功能应用以及数据处理,例如上述任一实施例所提供的方法。
电子设备40也可以与一个或多个外部设备44(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(I/O)接口45进行。并且,模型生成的电子设备40还可以通过网络适配器46与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器46通过总线43与模型生成的电子设备40的其它模块通信。应当明白,尽管图中未示出,可以结合模型生成的电子设备40使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID(磁盘阵列)系统、磁带驱动器以及数据备份存储系统等。
应当注意,尽管在上文详细描述中提及了电子设备的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所提供的方法。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (12)
1.一种任务执行方法,其特征在于,应用于业务系统,所述业务系统包含多个定时任务;
所述任务执行方法包括:
确定待执行的定时任务的类型;
若所述待执行的定时任务为一级任务,则在到达所述待执行的定时任务的开始执行时刻的情况下,调用线程池中的空闲线程以执行所述待执行的定时任务;
若所述待执行的定时任务为二级任务,则判断所述线程池中空闲线程的第一数量是否大于所述多个定时任务中未执行的一级任务的第二数量,在所述第一数量大于所述第二数量且到达所述待执行的定时任务的开始执行时刻的情况下,调用所述空闲线程以执行所述待执行的定时任务,其中,所述一级任务的优先级高于所述二级任务的优先级。
2.如权利要求1所述的任务执行方法,其特征在于,若类型为二级任务的待执行的定时任务的第三数量为n个,n≥2,调用所述空闲线程以执行所述待执行的定时任务,包括:
判断所述第三数量是否大于所述第一数量与所述第二数量的差值i,i≥0;
在所述第三数量大于所述差值的情况下,调用线程池中的i个空闲线程以执行i个待执行的定时任务;
在所述第三数量不大于所述差值的情况下,调用所述线程池中的n个空闲线程以执行n个待执行的定时任务。
3.如权利要求2所述的任务执行方法,其特征在于,调用线程池中的i个空闲线程以执行i个待执行的定时任务,包括:
按照开始执行时刻的先后顺序对n个待执行的定时任务进行排序;
从n个待执行的定时任务中选取排序靠前的i个待执行的定时任务,并调用i个空闲线程以执行所述i个待执行的定时任务。
4.如权利要求1所述的任务执行方法,其特征在于,所述空闲线程包含正在执行预执行完毕的定时任务的线程,所述预执行完毕的定时任务为正在执行的定时任务中执行结束时刻早于所述待执行的定时任务的开始执行时刻的定时任务。
5.如权利要求1所述的任务执行方法,其特征在于,若所述第一数量不大于所述第二数量,所述任务执行方法还包括:
在正在执行的定时任务的执行时长大于时长阈值的情况下,停止执行所述正在执行的定时任务以释放线程。
6.一种任务执行装置,其特征在于,应用于业务系统,所述业务系统包含多个定时任务;
所述任务执行装置包括:
确定模块,用于确定待执行的定时任务的类型;
调用模块,用于在所述待执行的定时任务为一级任务且到达所述待执行的定时任务的开始执行时刻的情况下,调用线程池中的空闲线程以执行所述待执行的定时任务;
判断模块,用于在所述待执行的定时任务为二级任务的情况下,判断所述线程池中空闲线程的第一数量是否大于所述多个定时任务中未执行的一级任务的第二数量,并在所述第一数量大于所述第二数量且到达所述待执行的定时任务的开始执行时刻的情况下,调用所述调用模块,以调用所述空闲线程并执行所述待执行的定时任务,其中,所述一级任务的优先级高于所述二级任务的优先级。
7.如权利要求6所述的任务执行装置,其特征在于,若类型为二级任务的待执行的定时任务的第三数量为n个,n≥2,所述调用模块包括:
判断单元,用于判断所述第三数量是否大于所述第一数量与所述第二数量的差值i,i≥0,
调用单元,用于在所述第三数量大于所述差值的情况下,调用线程池中的i个空闲线程以执行i个待执行的定时任务;
所述调用单元,还用于在所述第三数量不大于所述差值的情况下,调用所述线程池中的n个空闲线程以执行n个待执行的定时任务。
8.如权利要求7所述的任务执行装置,其特征在于,在调用线程池中的i个空闲线程以执行i个待执行的定时任务时,所述调用单元用于:
按照开始执行时刻的先后顺序对n个待执行的定时任务进行排序;
从n个待执行的定时任务中选取排序靠前的i个待执行的定时任务,并调用i个空闲线程以执行所述i个待执行的定时任务。
9.如权利要求6所述的任务执行装置,其特征在于,所述空闲线程包含正在执行预执行完毕的定时任务的线程,所述预执行完毕的定时任务为正在执行的定时任务中执行结束时刻早于所述待执行的定时任务的开始执行时刻的定时任务。
10.如权利要求6所述的任务执行装置,其特征在于,所述任务执行装置还包括:
停止模块,用于在所述第一数量不大于所述第二数量且正在执行的定时任务的执行时长大于时长阈值的情况下,停止执行所述正在执行的定时任务以释放线程。
11.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述的任务执行方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的任务执行方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010541239.5A CN111767125B (zh) | 2020-06-15 | 2020-06-15 | 任务执行方法、装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010541239.5A CN111767125B (zh) | 2020-06-15 | 2020-06-15 | 任务执行方法、装置、电子设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111767125A CN111767125A (zh) | 2020-10-13 |
CN111767125B true CN111767125B (zh) | 2023-07-25 |
Family
ID=72721966
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010541239.5A Active CN111767125B (zh) | 2020-06-15 | 2020-06-15 | 任务执行方法、装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111767125B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988352A (zh) * | 2021-03-10 | 2021-06-18 | 中国建设银行股份有限公司 | 一种用于切换扫描模式的方法和装置 |
CN113238501A (zh) * | 2021-05-08 | 2021-08-10 | 西安联乘智能科技有限公司 | 一种基于rtos操作系统的车联网控制方法和系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106020954A (zh) * | 2016-05-13 | 2016-10-12 | 深圳市永兴元科技有限公司 | 线程管理方法及装置 |
CN106095590A (zh) * | 2016-07-21 | 2016-11-09 | 联动优势科技有限公司 | 一种基于线程池的任务分配方法及装置 |
WO2017028724A1 (zh) * | 2015-08-19 | 2017-02-23 | 阿里巴巴集团控股有限公司 | 一种业务请求调整方法及设备 |
CN108984290A (zh) * | 2018-08-02 | 2018-12-11 | 北京京东金融科技控股有限公司 | 任务调度方法和系统 |
CN109558255A (zh) * | 2018-12-13 | 2019-04-02 | 广东浪潮大数据研究有限公司 | 一种任务处理的方法及任务处理装置 |
CN109766171A (zh) * | 2018-12-06 | 2019-05-17 | 斑马网络技术有限公司 | 任务处理方法、装置、设备以及存储介质 |
CN109783229A (zh) * | 2018-12-17 | 2019-05-21 | 平安普惠企业管理有限公司 | 线程资源分配的方法及装置 |
CN110018892A (zh) * | 2019-03-12 | 2019-07-16 | 平安普惠企业管理有限公司 | 基于线程资源的任务处理方法及相关装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7793299B2 (en) * | 2005-08-30 | 2010-09-07 | International Business Machines Corporation | System and method for scheduling tasks for execution |
US9135062B2 (en) * | 2013-04-09 | 2015-09-15 | National Instruments Corporation | Hardware assisted method and system for scheduling time critical tasks |
-
2020
- 2020-06-15 CN CN202010541239.5A patent/CN111767125B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017028724A1 (zh) * | 2015-08-19 | 2017-02-23 | 阿里巴巴集团控股有限公司 | 一种业务请求调整方法及设备 |
CN106020954A (zh) * | 2016-05-13 | 2016-10-12 | 深圳市永兴元科技有限公司 | 线程管理方法及装置 |
CN106095590A (zh) * | 2016-07-21 | 2016-11-09 | 联动优势科技有限公司 | 一种基于线程池的任务分配方法及装置 |
CN108984290A (zh) * | 2018-08-02 | 2018-12-11 | 北京京东金融科技控股有限公司 | 任务调度方法和系统 |
CN109766171A (zh) * | 2018-12-06 | 2019-05-17 | 斑马网络技术有限公司 | 任务处理方法、装置、设备以及存储介质 |
CN109558255A (zh) * | 2018-12-13 | 2019-04-02 | 广东浪潮大数据研究有限公司 | 一种任务处理的方法及任务处理装置 |
CN109783229A (zh) * | 2018-12-17 | 2019-05-21 | 平安普惠企业管理有限公司 | 线程资源分配的方法及装置 |
CN110018892A (zh) * | 2019-03-12 | 2019-07-16 | 平安普惠企业管理有限公司 | 基于线程资源的任务处理方法及相关装置 |
Non-Patent Citations (2)
Title |
---|
分布式线程池模型的设计与实现;帖军;;中南民族大学学报(自然科学版)(第02期);83-86 * |
基于Win32的面向对象的线程池的研究与实现;孙慧媛;金伟祖;;电脑知识与技术(第20期);46-49 * |
Also Published As
Publication number | Publication date |
---|---|
CN111767125A (zh) | 2020-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106802826B (zh) | 一种基于线程池的业务处理方法及装置 | |
CN110018893B (zh) | 一种基于数据处理的任务调度方法及相关设备 | |
WO2020211579A1 (zh) | 一种基于分布式批量处理系统的处理方法、装置及系统 | |
US20190108069A1 (en) | Distributed resource allocation method, allocation node, and access node | |
EP2851799B1 (en) | Fault tolerant batch processing | |
WO2016183553A1 (en) | Query dispatch and execution architecture | |
CN111625331B (zh) | 任务调度方法、装置、平台、服务器及存储介质 | |
CN112181621B (zh) | 一种任务调度系统、方法、设备及存储介质 | |
US20140215481A1 (en) | Assigning nodes to jobs based on reliability factors | |
CN110489217A (zh) | 一种任务调度方法及系统 | |
JP2007529079A (ja) | 自己調節スレッド化モデルによるアプリケーションサーバのためのシステム及び方法 | |
CN111767125B (zh) | 任务执行方法、装置、电子设备、存储介质 | |
CN112486642B (zh) | 资源调度方法、装置、电子设备及计算机可读存储介质 | |
CN111796946A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN111857987B (zh) | 一种基于icm的异常任务处理方法及装置 | |
CN111158875B (zh) | 基于多模块的多任务处理方法、装置及系统 | |
CN109189581B (zh) | 一种作业调度方法和装置 | |
CN111831408A (zh) | 异步任务处理方法、装置、电子设备及介质 | |
CN115033375A (zh) | 集群模式下分布式任务调度方法、装置、设备及存储介质 | |
CN113051063B (zh) | 分布式任务的任务调度方法、装置及电子设备 | |
CN113391911B (zh) | 一种大数据资源动态调度方法、装置和设备 | |
CN113626173A (zh) | 调度方法、装置及存储介质 | |
US20200241911A1 (en) | Automatically freeing up virtual machine resources based on virtual machine tagging | |
CN107621975B (zh) | 基于java timer高可用性的定时器逻辑实现方法 | |
CN111026809A (zh) | 一种调度流程分布式执行系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |