一种任务调度方法及系统的制作方法

文档序号:10654311阅读:350来源:国知局
一种任务调度方法及系统的制作方法
【专利摘要】本发明实施例提供一种任务调度方法及系统,该方法包括:启动任务管理器,以初始化任务队列;任务队列基于延时队列实现,任务队列中的任务仅在对应延期时间到达时才能从任务队列中调取;任务管理器启动任务扫描器;任务扫描器循环调用任务管理器提供的从任务队列中获取到达延期时间的任务的接口,从任务队列中获取到达延期时间的任务,并将获取的任务交给任务执行器,直至任务管理器的状态变更为停止;任务执行器通过工作线程执行所述任务,并根据所述任务重复执行的间隔时间,生成新的任务,以通过任务管理器提供的添加任务到任务队列的接口,添加该新的任务到任务队列中。本发明实施例可达到以简单的配置实现任务调度,并降低资源占用的目的。
【专利说明】
_种任务调度方法及系统
技术领域
[0001]本发明涉及数据处理技术领域,更具体地说,涉及一种任务调度方法及系统。
【背景技术】
[0002]目前大部分应用系统都有重复执行某些任务的需求,因此就需要采用任务调度的方式间隔调起这些任务,并重复的执行这些任务,以达成该需求。
[0003]目前的任务调度方式主要是基于Quartz开源框架实现(Quartz是一个完全由java编写的开源作业调度框架),然而采用Quartz开源框架实现任务调度需要引入第三方的库,这使得任务调度的配置较为复杂,且占用资源较多;因此如何以简单的配置实现任务调度,并降低资源占用,成为了本领域技术人员需要考虑的问题。

【发明内容】

[0004]有鉴于此,本发明实施例提供一种任务调度方法及系统,达到以简单的配置实现任务调度,并降低资源占用的目的。
[0005]为实现上述目的,本发明实施例提供如下技术方案:
[0006]一种任务调度方法,包括:
[0007]启动任务管理器,以初始化任务队列;所述任务队列基于延时队列实现,所述任务队列集合有一组延时类型的任务,所述任务队列中的任务仅在对应延期时间到达时才能从所述任务队列中调取;
[0008]任务管理器启动任务扫描器;
[0009]任务扫描器循环调用任务管理器提供的从任务队列中获取到达延期时间的任务的接口,从任务队列中获取到达延期时间的任务,并将获取的所述任务交给任务执行器,直至任务管理器的状态变更为停止;
[0010]任务执行器通过工作线程执行所述任务,并根据所述任务重复执行的间隔时间,生成新的任务,以通过任务管理器提供的添加任务到任务队列的接口,添加该新的任务到任务队列中,以实现需重复执行的任务的间隔重复运行。
[0011 ]可选的,所述方法还包括:
[0012]任务执行器控制工作线程的数量,以控制同时运行的任务数。
[0013]可选的,任务执行器执行任务的入口是任务执行类的run方法,执行run方法以顺序调用execute方法和af terExcuter方法;
[0014]其中,execute方法实现任务内容的执行,由任务实现类实现;afterExcuter方法实现添加新的任务到任务队列中,由上层类实现。
[0015]可选的,所述方法还包括:
[0016]任务扫描器扫描到任务发现器时,调度任务发现器;
[0017]通过任务发现器将任务发现器在构建时从配置数据中获取并维护的数据最后维护时间,与最新的配置数据中的数据最后维护时间进行比对;
[0018]如果比对不一致,获取比对不一致对应的新变更任务;
[0019]构建新变更任务并通过任务管理器提供的添加任务到任务队列的接口,将新变更任务添加到任务队列中。
[0020]可选的,所述方法还包括:
[0021]通过任务管理器管理任务队列、启动任务扫描器、停止任务扫描器。
[0022]本发明实施例还提供一种任务调度系统,包括:任务管理器,任务队列,任务扫描器,和任务执行器;
[0023]其中,所述任务管理器,用于提供添加任务到任务队列的接口,从任务队列中获取到达延期时间的任务的接口;且所述任务队列随任务管理器的启动而初始化;
[0024]所述任务队列基于延时队列实现,且用于集合一组延时类型的任务,所述任务队列中的任务仅在对应延期时间到达时才能从所述任务队列中调取;
[0025]所述任务扫描器,用于循环调用任务管理器提供的从任务队列中获取到达延期时间的任务的接口,从任务队列中获取到达延期时间的任务,并将获取的所述任务交给任务执行器,直至任务管理器的状态变更为停止;
[0026]所述任务执行器,用于通过工作线程执行所述任务,并根据所述任务重复执行的间隔时间,生成新的任务,以通过任务管理器提供的添加任务到任务队列的接口,添加该新的任务到任务队列中,以实现需重复执行的任务的间隔重复运行。
[0027]可选的,所述任务执行器还可用于,控制工作线程的数量,以控制同时运行的任务数。
[0028]可选的,任务执行器执行任务的入口是任务执行类的run方法,执行run方法以顺序调用execute方法和af terExcuter方法;
[0029]其中,execute方法实现任务内容的执行,由任务实现类实现;afterExcuter方法实现添加新的任务到任务队列中,由上层类实现。
[0030]可选的,所述系统还包括:任务发现器,用于在被任务扫描器扫描到时,受任务扫描器调度执行如下内容:将任务发现器在构建时从配置数据中获取并维护的数据最后维护时间,与最新的配置数据中的数据最后维护时间进行比对,如果比对不一致,获取比对不一致对应的新变更任务,构建新变更任务并通过任务管理器提供的添加任务到任务队列的接口,将新变更任务添加到任务队列中。
[0031]可选的,所述任务管理器还可用于,管理任务队列、启动任务扫描器、停止任务扫描器。
[0032]基于上述技术方案,本发明实施例提供的任务调度方法包括:启动任务管理器,以初始化任务队列;所述任务队列基于延时队列实现,所述任务队列集合有一组延时类型的任务,所述任务队列中的任务仅在对应延期时间到达时才能从所述任务队列中调取;任务管理器启动任务扫描器;任务扫描器循环调用任务管理器提供的从任务队列中获取到达延期时间的任务的接口,从任务队列中获取到达延期时间的任务,并将获取的所述任务交给任务执行器,直至任务管理器的状态变更为停止;任务执行器通过工作线程执行所述任务,并根据所述任务重复执行的间隔时间,生成新的的任务,以通过任务管理器提供的添加任务到任务队列的接口,添加该新的任务到任务队列中,以实现需重复执行的任务的间隔重复运行。可以看出,本发明实施例在实现任务调度时,不需要在运行时使用专用的第三方的库,即不需要采用专用的数据结构存储配置信息,而是可基于任务信息的自描述,利用基于延时队列实现的任务队列及任务扫描器和任务执行器实现任务的重复调度执行,使得任务调度的配置较为角度,且可使用较少的资源实现应用系统中任务重复调度执行的需求,而节约的资源可以提高应用系统的负载能力,本发明实施例可达到以简单的配置实现任务调度,并降低资源占用的目的。
【附图说明】
[0033]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0034]图1为本发明实施例提供的任务调度系统的结构框图;
[0035]图2为本发明实施例提供的任务调度方法的流程图;
[0036]图3为本发明实施例提供的任务调度方法的另一流程图;
[0037]图4为任务管理器的启动流程图;
[0038]图5为任务扫描器的工作流程图;
[0039]图6为任务执行器的工作流程图;
[0040]图7为本发明实施例提供的任务调度系统的另一结构框图;
[0041 ]图8为任务发现器的工作流程图;
[0042]图9为本发明实施例提供的任务调度系统的组件示意图。
【具体实施方式】
[0043]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0044]图1为本发明实施例提供的任务调度系统的结构框图,参照图1,本发明实施例提供的任务调度系统可以包括:任务管理器10,任务队列20,任务扫描器30,和任务执行器40;
[0045]在本发明实施例中,任务管理器主要用于管理任务队列、启动任务扫描器、及停止任务扫描器等功能;
[0046]任务管理器对应有一任务队列,并可提供添加任务到任务队列,从任务队列获取延期任务等操作的接口;同时,任务管理器启动时,可初始化任务队列。
[0047]在本发明实施例中,任务队列是一组待执行任务的集合,而任务可认为是可执行的业务逻辑单元,任务可包含如下信息:
[0048]任务编号,任务的编号标识;
[0049]任务类型,分为一次执行任务或重复执行任务;
[0050]重复周期(单位秒),重复执行任务的任务执行间隔;
[0051 ]任务定义,描述任务实现类;
[0052]最后更新时间,任务配置信息最新维护时间;
[0053]可选的,本发明实施例可利用Java(—种可以撰写跨平台应用程序的面向对象的程序设计语言)Sdk(Software Development Kit,软件开发工具包)提供的延时队列(DelayedQueue)实现任务队列;DelayedQueue是一个用来延时处理元素的队列,所谓延时处理就是说可以为队列中的元素设定一个延期时间,元素的操作受到这个延期时间的控制;
[0054]因此,本发明实施例的任务队列中可添加DeIayed (延时的)类型的任务,只有在任务队列中的任务的延期时间到达时,才能从任务队列中提取该任务进行执行;
[0055]通常的,DelayedQueue常用于处理超时,而本发明实施例利用DelayedQueue实现任务队列,基于DelayedQueue未到延期时间不能获取其中元素的特性,本发明实施例可不断获取DelayedQueue中已到达延期时间的元素(任务)实现任务调度。
[0056]任务扫描器主要通过任务管理器提供的从任务队列获取延期任务的接口,从任务队列中获取到达延期时间的任务,并调用任务执行器执行所获取的到达延期时间的任务;
[0057]可选的,任务扫描器可循环调用任务管理器提供的从任务队列获取延期任务的接口,获取到达延期时间的任务,并将获取的任务交由任务执行器执行,以此循环执行,直至任务管理器状态变更为停止。
[0058]任务执行器主要实现任务扫描器所获取的任务的执行,并可添加下次需执行的任务到任务队列;
[0059]可选的,任务执行器可通过工作线程执行任务扫描器所获取的任务,在任务执行后,可根据任务重复执行的间隔时间,生成新的任务,以通过任务管理器提供的提供添加任务到任务队列的接口,添加该新的任务到任务队列中,实现需重复执行的任务的间隔重复运行;同时可保证同一任务间隔运行,不会出现其他任务调度引擎中同一任务多单重复间隔短时,同一时间多个相同任务同时执行的情况。
[0060]上述任务管理器,任务队列,任务扫描器,和任务执行器可以认为是应用系统中的逻辑功能模块组件。
[0061]基于图1所示任务调度系统,图2示出了本发明实施例提供的任务调度方法的流程图,参照图2,该任务调度方法可以包括:
[0062]步骤S100、启动任务管理器,以初始化任务队列;所述任务队列基于延时队列实现,所述任务队列集合有一组延时类型的任务,所述任务队列中的任务仅在对应延期时间到达时才能从所述任务队列中调取;
[0063]可选的,任务可以认为是可执行的业务逻辑单元,其包含任务编号、任务类型、重复周期、任务定义、最后更新时间等信息;可以看出,基于任务中包含的最后更新时间信息,可通过任务的信息实现任务配置信息的自描述;
[0064]任务管理器可管理任务队列,且一个任务管理器可对应一个任务队列;任务管理器可提供添加任务到任务队列的接口,从任务队列中获取到达延期时间的任务的接口等;同时,任务管理器启动时,任务队列同时初始化;可选的,本发明实施例可通过任务管理器管理任务队列、启动任务扫描器、停止任务扫描器。
[0065]步骤S110、任务管理器启动任务扫描器;
[0066]步骤S120、任务扫描器循环调用任务管理器提供的从任务队列中获取到达延期时间的任务的接口,从任务队列中获取到达延期时间的任务,并将获取的所述任务交给任务执行器,直至任务管理器的状态变更为停止;
[0067]任务扫描器启动后可循环调用任务管理器提供的从任务队列中获取到达延期时间的任务的接口,当获取到到达延期时间的任务后,可交由任务执行器执行,然后继续此循环去调用任务管理器提供的从任务队列中获取到达延期时间的任务的接口,不停的获取到到达延期时间的任务,直至任务管理器的状态变更为停止;
[0068]可选的,任务扫描器每次调用任务管理器提供的从任务队列中获取到达延期时间的任务的接口时,可均判断下任务管理器的状态,如果任务管理器的状态变更为停止,则任务扫描器可跳出循环,结束扫描,即结束调用任务管理器提供的从任务队列中获取到达延期时间的任务的接口。
[0069]步骤S130、任务执行器通过工作线程执行所述任务,并根据所述任务重复执行的间隔时间,生成新的任务,以通过任务管理器提供的添加任务到任务队列的接口,添加该新的任务到任务队列中,以实现需重复执行的任务的间隔重复运行。
[0070]可选的,任务执行器执行任务的入口可以是任务执行类的run方法,执行run方法会顺序调用execute方法和af terExcuter方法;其中,execute方法实现任务内容的执行,由任务实现类实现;afterExcuter方法实现添加新的任务到任务队列中,由上层类实现;即在上层类已实现的基础上,本发明实施例才只需要任务实现类实现execute方法;
[0071]可选的,任务在执行后,任务可以根据配置信息的自描述,通过任务管理器提供的任务到任务队列的接口,添加到任务队列中,以实现当前任务的重复执行。
[0072]可选的,本发明实施例在开发任务实现类时只需要实现execute方法,而不用考虑任务怎么重复执行等具体细节。
[0073]本发明实施例提供的任务调度方法包括:启动任务管理器,以初始化任务队列;所述任务队列基于延时队列实现,所述任务队列集合有一组延时类型的任务,所述任务队列中的任务仅在对应延期时间到达时才能从所述任务队列中调取;任务管理器启动任务扫描器;任务扫描器循环调用任务管理器提供的从任务队列中获取到达延期时间的任务的接口,从任务队列中获取到达延期时间的任务,并将获取的所述任务交给任务执行器,直至任务管理器的状态变更为停止;任务执行器通过工作线程执行所述任务,并根据所述任务重复执行的间隔时间,生成新的的任务,以通过任务管理器提供的添加任务到任务队列的接口,添加该新的任务到任务队列中,以实现需重复执行的任务的间隔重复运行。可以看出,本发明实施例在实现任务调度时,不需要在运行时使用专用的第三方的库,即不需要采用专用的数据结构存储配置信息,而是可基于任务信息的自描述,利用基于延时队列实现的任务队列及任务扫描器和任务执行器实现任务的重复调度执行,使得任务调度的配置较为角度,且可使用较少的资源实现应用系统中任务重复调度执行的需求,而节约的资源可以提高应用系统的负载能力,本发明实施例可达到以简单的配置实现任务调度,并降低资源占用的目的。
[0074]可选的,在本发明实施例中,任务执行器还可控制工作线程的数量,以控制同时运行的任务数,避免大量任务同时运行时出现资源溢出的情况。
[0075]可选的,本发明实施例还可通过设置任务发现器,以动态添加调度任务;任务发现器的本质是一个特殊的任务,任务发现器可以通过任务扫描器进行调度,任务扫描器扫描到任务发现器后的任务执行内容为:获取新增任务,并调用任务管理器提供的添加任务的接口在任务队列中增加新任务;
[0076]任务发现器获取新增任务的工作原理为:任务发现器在任务构建时维护一个当时从配置数据(数据库或配置文件)里获取的“数据最后维护时间”,在任务执行时,通过这个“数据最后维护时间”和最新的配置数据中的数据最后维护时间进行比对,来识别新任务;
[0077]可选的,图3示出了本发明实施例提供的任务调度方法的另一流程图,参照图3,该任务调度方法可以包括:
[0078]步骤S200、任务扫描器扫描到任务发现器时,调度任务发现器;
[0079]步骤S210、通过任务发现器将任务发现器在构建时从配置数据中获取并维护的数据最后维护时间,与最新的配置数据中的数据最后维护时间进行比对;
[0080]步骤S220、如果比对不一致,获取比对不一致对应的新变更任务;
[0081]任务中的最后更新时间信息,可与配置数据中所维持的任务的数据最后维护时间相同步,以使得最新的配置数据中记录有各任务的最后更新时间信息,从而在任务发现器从配置数据中获取并维护的各任务的数据最后维护时间,与最新的配置数据中记录的各任务的数据最后维护时间不一致时,可将不一致对应的任务作为新变更任务。
[0082]步骤S230、构建新变更任务并通过任务管理器提供的添加任务到任务队列的接口,将新变更任务添加到任务队列中。
[0083]可选的,本发明实施例提供的任务调度方法可具有如下优点:
[0084]结构轻巧,对于需要重复调起的任务进行配置信息自描述,并以基于延时队列实现的任务队列及任务扫描器和任务执行器实现任务的重复调度执行,占用资源少;
[0085]在任务执行后可根据重复间隔生成新任务并重新添加到任务队列,保证同一任务间隔运行,不会出现同一时间多个相同任务执行的情况;
[0086]通过设置工作线程的数量来控制同时运行的任务数,可避免资源溢出风险;
[0087]使用任务发现器,可以动态增加调度任务。
[0088]下面对本发明实施例提供的任务调度系统进行介绍,下文描述的任务调度系统可与上文描述的任务调度方法相对应参照。
[0089]本发明实施例提供的任务调度系统的结构可如图1所示,包括:任务管理器10,任务队列20,任务扫描器30,和任务执行器40;
[0090]其中,所述任务管理器,用于提供添加任务到任务队列的接口,从任务队列中获取到达延期时间的任务的接口;且所述任务队列随任务管理器的启动而初始化;
[0091]所述任务队列基于延时队列实现,且用于集合一组延时类型的任务,所述任务队列中的任务仅在对应延期时间到达时才能从所述任务队列中调取;
[0092]所述任务扫描器,用于循环调用任务管理器提供的从任务队列中获取到达延期时间的任务的接口,从任务队列中获取到达延期时间的任务,并将获取的所述任务交给任务执行器,直至任务管理器的状态变更为停止;
[0093]所述任务执行器,用于通过工作线程执行所述任务,并根据所述任务重复执行的间隔时间,生成新的任务,以通过任务管理器提供的添加任务到任务队列的接口,添加该新的任务到任务队列中,以实现需重复执行的任务的间隔重复运行。
[0094]可选的,在本发明实施例中,所述任务执行器还可用于,控制工作线程的数量,以控制同时运行的任务数。
[0095]可选的,在本发明实施例中,任务管理器的启动流程可以如图4所示,包括:
[0096]步骤S10、初始化任务队列;
[0097]步骤SI1、设置任务管理器的状态为运行;
[0098]步骤S12、启动任务扫描器。
[0099]可选的,任务管理器还可用于管理任务队列、启动任务扫描器、停止任务扫描器。
[0100]可选的,在本发明实施例中,任务扫描器的工作流程可以如图5所述,包括:
[0101 ]步骤S20、判断是否可停止扫描,若是,进入步骤S21,若否,进入步骤S22 ;
[0102]步骤S21、结束流程;
[0103]可选的,可停止扫描如任务管理器的状态为停止的情况。
[0104]步骤S22、判断通过任务管理器提供的从任务队列中获取到达延期时间的任务的接口,是否可获取到到达延期时间的任务,若是,执行步骤S23,若否,返回步骤S20;
[0105]步骤S23、获取到达延期时间的任务;
[0106]步骤S24、将所获取的任务交由任务执行器执行,返回步骤S20。
[0107]可选的,在本发明实施例中,任务执行器的工作流程可以如图6所示,包括:
[0108]步骤S30、执行任务扫描器交给的任务;
[0109]步骤S31、判断是否需重复执行当前任务,若是,执行步骤S32,若否,执行步骤S33;
[0110]需重复执行的任务可通过任务中的任务类型信息确定。
[0111]步骤S32、根据任务重复执行的间隔时间,生成新的任务并通过任务管理器提供的添加任务到任务队列的接口,添加该新的任务到任务队列中;
[0112]步骤S33、结束流程。
[0113]可选的,任务执行器执行任务的入口是任务执行类的run方法,执行run方法以顺序调用execute方法和af terExcuter方法;其中,execute方法实现任务内容的执行,由任务实现类实现;afterExcuter方法实现添加新的任务到任务队列中,由上层类实现。
[0114]可选的,图7示出了本发明实施例提供的任务调度系统的另一结构框图,结合图1和图7所示,该任务调度系统还可以包括:任务发现器50;
[0115]任务发现器主要用于,在被任务扫描器扫描到时,受任务扫描器调度执行如下内容:将任务发现器在构建时从配置数据中获取并维护的数据最后维护时间,与最新的配置数据中的数据最后维护时间进行比对,如果比对不一致,获取比对不一致对应的新变更任务,构建新变更任务并通过任务管理器提供的添加任务到任务队列的接口,将新变更任务添加到任务队列中。
[0116]可选的,在本发明实施例中,任务发现器的工作流程可以如图8所示,包括:
[0117]步骤S40、读取配置数据;
[0118]步骤S41、判断是否有新变更任务,若是,执行步骤S42,若否,执行步骤S43;
[0119]步骤S42、构建新变更任务并通过任务管理器提供的添加任务到任务队列的接口,将新变更任务添加到任务队列中;
[0120]步骤S43、结束流程。
[0121]可选的,图9示出了本发明实施例提供的任务调度系统的组件示意图,可参照。
[0122]经实践测试,本发明实施例提供的任务调度系统应用在Cathay平台缓存管理的自动刷新功能上后,收到了良好的效果;
[0123]首先,本发明实施例提供的任务调度系统结构简单,对于需要重复调起的任务进行配置信息自描述,不需要在运行时使用专门的数据结构存储配置信息,从而可利用基于延时队列实现的任务队列及任务扫描器和任务执行器实现任务的重复调度执行,使用最少的资源实现了应用需求,节约的资源可以提高系统的负载能力;
[0124]其次,Cathay平台要求某类缓存的刷新任务同时只能运行一个且保证间隔运行,本发明在任务内容执行后根据重复间隔生成新任务并重新添加到任务队列的设计很好的满足该需求;
[0125]再次,Cathay平台缓存会大量占用系统内存,而应用缓存刷新需求是将某类缓存全量读取后一次性替换旧缓存,在刷新过程中占用内存比较大;如果允许多个刷新同时进行,可能会导致内存溢出,必须对同时执行的缓存刷新任务数进行控制;而利用本发明,通过设置工作线程数量来控制并发任务的特性,可将工作线程数量设置为I,轻松避免了多个缓存同时刷新导致内存溢出的风险;
[0126]最后,Cathay平台要求支持动态新增缓存,新增的缓存需要定期自动刷新,而利用本发明的任务发现器,可通过定期扫描配置信息的变更很方便地实现该需求。
[0127]本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0128]专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以计算机软件来实现,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0129]结合本文中所公开的实施例描述的方法或算法的步骤可以用处理器执行的软件模块来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(R0M)、电可编程R0M、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0130]对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
【主权项】
1.一种任务调度方法,其特征在于,包括: 启动任务管理器,以初始化任务队列;所述任务队列基于延时队列实现,所述任务队列集合有一组延时类型的任务,所述任务队列中的任务仅在对应延期时间到达时才能从所述任务队列中调取; 任务管理器启动任务扫描器; 任务扫描器循环调用任务管理器提供的从任务队列中获取到达延期时间的任务的接口,从任务队列中获取到达延期时间的任务,并将获取的所述任务交给任务执行器,直至任务管理器的状态变更为停止; 任务执行器通过工作线程执行所述任务,并根据所述任务重复执行的间隔时间,生成新的任务,以通过任务管理器提供的添加任务到任务队列的接口,添加该新的任务到任务队列中,以实现需重复执行的任务的间隔重复运行。2.根据权利要求1所述的任务调度方法,其特征在于,还包括: 任务执行器控制工作线程的数量,以控制同时运行的任务数。3.根据权利要求1所述的任务调度方法,其特征在于,任务执行器执行任务的入口是任务执行类的run方法,执行run方法以顺序调用execute方法和afterExcuter方法; 其中,execute方法实现任务内容的执行,由任务实现类实现;afterExcuter方法实现添加新的任务到任务队列中,由上层类实现。4.根据权利要求1所述的任务调度方法,其特征在于,还包括: 任务扫描器扫描到任务发现器时,调度任务发现器; 通过任务发现器将任务发现器在构建时从配置数据中获取并维护的数据最后维护时间,与最新的配置数据中的数据最后维护时间进行比对; 如果比对不一致,获取比对不一致对应的新变更任务; 构建新变更任务并通过任务管理器提供的添加任务到任务队列的接口,将新变更任务添加到任务队列中。5.根据权利要求1所述的任务调度方法,其特征在于,还包括: 通过任务管理器管理任务队列、启动任务扫描器、停止任务扫描器。6.一种任务调度系统,其特征在于,包括:任务管理器,任务队列,任务扫描器,和任务执行器; 其中,所述任务管理器,用于提供添加任务到任务队列的接口,从任务队列中获取到达延期时间的任务的接口;且所述任务队列随任务管理器的启动而初始化; 所述任务队列基于延时队列实现,且用于集合一组延时类型的任务,所述任务队列中的任务仅在对应延期时间到达时才能从所述任务队列中调取; 所述任务扫描器,用于循环调用任务管理器提供的从任务队列中获取到达延期时间的任务的接口,从任务队列中获取到达延期时间的任务,并将获取的所述任务交给任务执行器,直至任务管理器的状态变更为停止; 所述任务执行器,用于通过工作线程执行所述任务,并根据所述任务重复执行的间隔时间,生成新的任务,以通过任务管理器提供的添加任务到任务队列的接口,添加该新的任务到任务队列中,以实现需重复执行的任务的间隔重复运行。7.根据权利要求6所述的任务调度系统,其特征在于,所述任务执行器还可用于,控制工作线程的数量,以控制同时运行的任务数。8.根据权利要求6所述的任务调度系统,其特征在于,任务执行器执行任务的入口是任务执行类的run方法,执行run方法以顺序调用execute方法和af terExcuter方法; 其中,execute方法实现任务内容的执行,由任务实现类实现;af terExcuter方法实现添加新的任务到任务队列中,由上层类实现。9.根据权利要求6所述的任务调度系统,其特征在于,还包括:任务发现器,用于在被任务扫描器扫描到时,受任务扫描器调度执行如下内容:将任务发现器在构建时从配置数据中获取并维护的数据最后维护时间,与最新的配置数据中的数据最后维护时间进行比对,如果比对不一致,获取比对不一致对应的新变更任务,构建新变更任务并通过任务管理器提供的添加任务到任务队列的接口,将新变更任务添加到任务队列中。10.根据权利要求6所述的任务调度系统,其特征在于,所述任务管理器还可用于,管理任务队列、启动任务扫描器、停止任务扫描器。
【文档编号】G06F9/48GK106020951SQ201610313299
【公开日】2016年10月12日
【申请日】2016年5月12日
【发明人】冯志强, 吴旭春, 杨鹏, 盛民, 盛一民, 杜念冰
【申请人】中国农业银行股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1