CN1862575B - 计划调度定时任务的方法 - Google Patents

计划调度定时任务的方法 Download PDF

Info

Publication number
CN1862575B
CN1862575B CN2005100909015A CN200510090901A CN1862575B CN 1862575 B CN1862575 B CN 1862575B CN 2005100909015 A CN2005100909015 A CN 2005100909015A CN 200510090901 A CN200510090901 A CN 200510090901A CN 1862575 B CN1862575 B CN 1862575B
Authority
CN
China
Prior art keywords
task
timed task
execution
thread
time
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.)
Expired - Fee Related
Application number
CN2005100909015A
Other languages
English (en)
Other versions
CN1862575A (zh
Inventor
张磊
龚华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN2005100909015A priority Critical patent/CN1862575B/zh
Publication of CN1862575A publication Critical patent/CN1862575A/zh
Application granted granted Critical
Publication of CN1862575B publication Critical patent/CN1862575B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明涉及一种计划调度定时任务的方法,其核心是:基于定时迭代器,通过至少两个线程调度并执行计划调度的定时任务。通过本发明将计划以定时迭代器的方式独立出来,便于实现任意复杂的计划;而且在实现定时迭代器时使用日历算法,消除了夏令时的偏差,解决夏令时修正问题;当使用定时迭代器之后,每一次迭代都按照当前的系统时间进行计算,所以能够不受中途修正系统时间的影响,及时感知系统时间的修正,保证了计划的准确性;另外,本发明引入线程池技术,从根本上解决时间漂移问题,并且大大提高计划调度以及执行任务的能力,从而能够容纳更多的定时任务。

Description

计划调度定时任务的方法
技术领域
本发明涉及通讯领域,尤其涉及一种计划调度定时任务的方法。
背景技术
随着信息技术的发展,计划调度任务的需求越来越广泛,如,企业需要计划调度每日的日志或者晚间批处理过程;用户需要根据约定计划调度闹铃时间,等等。
与本发明相关的现有技术一,是基于Java应用程序实现任务的计划调度的技术方案,在该方案中引入了定时器框架,使用该定时器框架能够使程序员比较容易地计划简单的任务。在所述Java定时器框架中使用一个队列存放所有定时任务,使用一个后台线程完成所有任务的调度与执行。其处理流程如图1所示,包括:
步骤S101、主线程注册定时任务,指定开始时间,时间间隔;
步骤S102、将后台线程从等待状态唤醒,之后结束主线程;
当所述后台线程从等待状态被唤醒后,其执行步骤S103,即所述后台线程从任务队列中取出一个执行时间最早的定时任务;
步骤S104、所述后台线程判断所述取出的定时任务的执行时间是否大于所述当前时间,若是,则执行步骤S105,即等待,等待时间为执行时间减去当前时间,然后转入步骤S103;否则,执行步骤S106,即执行所述定时任务;然后执行步骤S107;
步骤S107、判断所述取出的定时任务是否需要重复执行,若需要重复执 行,则执行步骤S108,即修改所述定时任务的执行时间,即将当前执行时间加上设定的时间间隔,然后用修改后的执行时间更新所述定时任务的执行时间,然后转入步骤S103;如果不需要重复执行,即确认所述定时任务为单次任务时,则执行步骤S109,即将所述单次定时任务从任务队列中删除,然后转入步骤S103。
由现有技术的技术方案可以看出,由于现有技术通过指定一个固定的执行时间间隔来实现重复执行的定时任务,因而其存在如下缺陷:
1、无法实现任意复杂的定时任务的计划调度,缺乏灵活性;
2、即使对每天同一时刻执行的任务,也会因为在夏令时开始和结束时出现时间跳跃;
3、当中途进行系统时间修正时,定时器无法感知,仍按照修正前的时间进行调度;
4、使用单一的后台线程调度并执行所有定时任务,处理能力弱,当执行某个任务耗费时间比较多时,容易产生时间漂移,即容易延迟其它任务的执行;
5、支持的定时任务数目少。
发明内容
鉴于上述现有技术所存在的问题,本发明的目的是提供一种计划调度定时任务的方法,通过该方法,能够支持任意复杂的计划调度,如每天同一时刻执行任务、每周某几天同一时刻执行任务、每月某几天同一时刻执行任务等等,因而比较灵活;通过该方法,当使用日历时,从而屏蔽了夏令时的影响;当中途进行系统时间修正时,下一次的调度能够按照修正后的系统时间进行;通过该方法引入的线程池技术,能够并发处理定时任务,一方面提高了处理能力,另一方面不会延迟其他任务的执行;而且本发明能够支持更多 数量的定时任务。
本发明的目的是通过以下技术方案实现的:
本发明提供的一种计划调度定时任务的方法,包括:
A、基于定时迭代器,通过至少两个线程调度并执行计划调度的定时任务;
其中,所述步骤A具体包括:
A1、获得调度定时任务的权利的后台线程从任务队列中获取执行时间最早的定时任务;
A2、判断所述获取的定时任务的执行时间是否大于当前时间,若大于,则所述线程进入等待状态,当等待时间到时,执行步骤A3;否则直接执行步骤A3;
A3、判断是否能够获取到所述定时任务的下次执行时间,若是,则从所述定时迭代器中获取所述定时任务的下次执行时间,并根据所述获取的下次执行时间更新所述定时任务的执行时间,然后执行步骤A4;否则,删除任务队列中的所述定时任务,然后执行步骤A4;
A4、唤醒线程池中的其它后台线程,并执行所述获取的定时任务,然后转入步骤A1。
其中,在所述步骤A1之前包括:
A5、主线程指定定时迭代器,并将计划调度的定时任务放入任务队列中,然后唤醒线程池中的后台线程;
A6、所述线程池中的后台线程通过竞争,只有一个后台线程获取调度定时任务的权利。
其中,所述步骤A1具体包括:
A11、后台线程判断所述任务队列是否为空,当确认所述任务队列不为空时,则执行步骤A12;否则,继续执行步骤A11;
A12、从所述任务队列中获取执行时间最早的定时任务。
其中,所述步骤A4还包括:
所述被唤醒的后台线程通过竞争,只有一个后台线程获取调度定时任务的权利,然后转入步骤A1。
其中,所述步骤A还包括:
A7、主线程根据注册的定时任务,从指定的定时迭代器中获取所述定时任务的执行时间,并根据所述获取的执行时间在定时器框架中注册单次执行的任务;
A8、定时触发所述定时器框架,将其内所述注册的单次执行的定时任务放入后台线程池的任务队列中,由后台线程对所述放入任务队列中的定时任务进行处理;
A9、当从定时迭代器中获取到所述定时任务的下一次执行时间时,根据所述获取的下一次执行时间向所述定时框架中注册单次执行的任务。
其中,在所述步骤A7之前包括:
A10、主线程注册定时任务,并指定定时迭代器。
其中,步骤A8中所述后台线程对所述放入任务队列中的定时任务进行处理的过程具体包括:
A81、通过所述后台线程池中的线程的竞争,只有一个后台线程获取调度定时任务的权利;
A82、所述获取调度定时任务的权利的后台线程,调度并执行所述放入任务队列中的定时任务,当执行完毕后,删除所述定时任务。
其中,所述步骤A9具体包括:
A91、判断是否能够从定时迭代器中获取到所述定时任务的下一次执行时间,若是,则根据所述获取的下一次执行时间向所述定时框架中注册单次执行的任务;否则,结束此步骤。
由上述本发明提供的技术方案可以看出,本发明所述的方法基于定时迭 代器,通过至少两个线程调度并执行计划调度的定时任务。通过本发明将计划以定时迭代器的方式独立出来,便于实现任意复杂的计划;而且在实现定时迭代器时使用日历算法,消除了夏令时的偏差,解决夏令时修正问题;当使用定时迭代器之后,每一次迭代都按照当前的系统时间进行计算,所以能够不受中途修正系统时间的影响,及时感知系统时间的修正,保证了计划的准确性;另外,本发明引入线程池技术,从根本上解决时间漂移问题,并且大大提高计划调度以及执行任务的能力,从而能够容纳更多的定时任务。
附图说明
图1为现有技术的流程图;
图2为本发明提供的第一实施例的流程图;
图3为本发明提供的第二实施例的流程图。
具体实施方式
本发明提供了一种计划调度定时任务的方法,其主要思路是:通过提供一个预定义的时间序列来实现任意复杂的计划,该时间序列是一个个将要触发任务执行的时间点,由定时迭代器产生。在注册定时任务时,只要指定定时迭代器,就等于指定了执行定时任务的计划。另外通过引入线程池技术,也就是说使用多个后台线程并发执行定时任务,从根本上解决时间漂移问题。
本发明的核心是:基于定时迭代器,通过至少两个线程调度并执行计划调度的定时任务。
本发明提供的第一实施例,如图2所示,包括:
步骤S201,主线程注册定时任务,指定定时迭代器;并将定时任务放入任务队列。
步骤S202、将所有处于等待状态的后台线程唤醒,之后结束主线程。
步骤S203、所述被唤醒的后台线程参与线程竞争,只有一个后台线程获取调度定时任务的权利。
当确认所述任务队列不为空时执行步骤S204,即所述获取调度定时任务的权利的后台线程从所述任务队列中取出执行时间最早的定时任务;
步骤S205、判断所述取出的定时任务的执行时间是否大于当前时间,若大于当前时间,则执行步骤S206,即等待,等待时间为执行时间减去当前时间,然后转入步骤S207;否则,直接执行步骤S207。
步骤S207、判断是否能够从所述定时迭代器中获取到任务的下次执行时间。
如果能够从所述定时迭代器中获取到任务的下次执行时间,则表明该任务为重复执行的任务,不需要被取消,于是执行步骤S208,即从定时迭代器中获取任务的下次执行时间;然后执行步骤S209,即用所述获取到的下次执行时间去更新所述定时任务的执行时间;然后执行步骤S211;
如果不能够从所述定时迭代器中获取到任务的下次执行时间,则确定该任务为单次执行的任务或重复执行的任务已经结束,则需要被取消,于是执行步骤S210,即将所述定时任务从任务队列中删除,然后转入步骤S211。
步骤S211,唤醒其它所有后台线程(其它后台线程转入步骤S203,即去参与线程竞争),然后执行步骤S212。
步骤S212,所述后台线程执行所述获取的定时任务。当执行完毕后,转入步骤S203,即继续与其它后台线程参与线程竞争。
在上述本发明的技术方案中,所有的定时迭代器都提供一个相同的接口供计划调度框架调用,所述定时迭代器的本质是一个用日期表示的时间点序列,可以通过各种算法来定义任意复杂的计划。下面举例说明需要在一个每天固定时间执行任务的定时迭代器的实现方法:假设定时任务需要在每天早上9点执行,当计划调度框架调用接口方法获取下一次执行时间时,定时迭代器根据日历算法,在本次执行时间的基础上加上一天,这样就得到了第二天的执行时间。当需要夏令时修正时,所述定时迭代器通过日历算法进行处理。
由上述本发明的技术方案可以看出:
当本发明执行到步骤S211时,其它后台线程被唤醒,参与线程竞争后,其中的一个线程获取调度定时任务的权利,开始调度并执行所述定时任务;由于当前线程处理定时任务需要一定时间,这与任务的复杂程度有关,而另一线程完成调度后也可能马上开始调度并执行定时任务,如果是这样,那么此时就有两个后台线程同时执行定时任务。以此类推,本发明引入线程池技术,从根本上解决了时间漂移的问题,并且大大提高了计划调度以及执行任务的能力。
本发明提供的第二实施例,利用现有技术中的Java定时器框架提供的单次调度能力,使用线程池执行定时任务,同样能够达到本发明的目的。具体实施过程如图3所示,包括:
步骤S301,主线程注册定时任务,并指定定时迭代器。
步骤S302,所述主线程从所述指定的定时迭代器中获取定时任务的执行时间。
步骤S303,所述主线程根据所述获取的执行时间在定时器框架中,如Java定时器框架中,注册一个单次执行的任务;然后结束。
步骤S304,通过所述定时器框架中的Timer(计时器)定时触发,将所述定时器框架中的所述注册的单次执行的定时任务放入后台线程池的任务队列中,由后台线程进行处理,然后执行步骤S305。
步骤304中,当将所述定时框架中的所述注册的单次执行的定时任务放入后台线程池的任务队列中,由后台线程进行处理后,所述后台线程对任务队列中的定时任务进行处理的过程具体包括:所述后台线程池通过竞争,只有其中一个线程获取定时任务的执行权,其开始调度执行所述放入任务队列中的定时任务,执行完毕后,删除所述定时任务。
步骤S305,判断是否能够获取到所述任务的下一次执行时间,若能够获取下一次执行时间,则表明所述任务为重复执行的任务,于是执行步骤S306,即从定时迭代器中获取下一次执行时间,并根据所述获取的下一次执行时间向所述定时框架中注册单次执行的任务;如果获取不到下一次执行时 间,则表明所述任务为单次执行的任务或重复执行的任务已经结束,于是执行步骤S307,即结束此步骤。
由上述本发明的提供的技术方案可以看出,本发明将计划以定时迭代器的方式独立出来,便于实现任意复杂的计划;而且在实现定时迭代器时使用日历算法,消除了夏令时的偏差,解决夏令时修正问题;当使用定时迭代器之后,每一次迭代都按照当前的系统时间进行计算,所以能够不受中途修正系统时间的影响,及时感知系统时间的修正,保证了计划的准确性;另外,本发明引入线程池技术,从根本上解决时间漂移问题,并且大大提高计划调度以及执行任务的能力,从而能够容纳更多的定时任务。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (8)

1.一种计划调度定时任务的方法,其特征在于,包括:
A、基于定时迭代器,通过至少两个线程调度并执行计划调度的定时任务;
所述步骤A具体包括:
A1、获得调度定时任务的权利的后台线程从任务队列中获取执行时间最早的定时任务;
A2、判断所述获取的定时任务的执行时间是否大于当前时间,若大于,则所述线程进入等待状态,当等待时间到时,执行步骤A3;否则直接执行步骤A3;
A3、判断是否能够获取到所述定时任务的下次执行时间,若能,则从所述定时迭代器中获取所述定时任务的下次执行时间,并根据所述获取的下次执行时间更新所述定时任务的执行时间,然后执行步骤A4;否则,删除任务队列中的所述定时任务,然后执行步骤A4;
A4、唤醒线程池中的其它后台线程,并执行所述获取的定时任务,然后转入步骤A1。
2.根据权利要求1所述的方法,其特征在于,在所述步骤A1之前包括:
A5、主线程指定定时迭代器,并将计划调度的定时任务放入任务队列中,然后唤醒线程池中的后台线程;
A6、所述线程池中的后台线程通过竞争,只有一个后台线程获取调度定时任务的权利。
3.根据权利要求1或2所述的方法,其特征在于,所述步骤A1具体包括:
A11、后台线程判断所述任务队列是否为空,当确认所述任务队列不为空时,则执行步骤A12;否则,继续执行步骤A11;
A12、从所述任务队列中获取执行时间最早的定时任务。
4.根据权利要求3所述的方法,其特征在于,所述步骤A4还包括:
所述被唤醒的后台线程通过竞争,只有一个后台线程获取调度定时任务的权利,然后转入步骤A1。
5.根据权利要求1所述的方法,其特征在于,所述步骤A还包括:
A7、主线程根据注册的定时任务,从指定的定时迭代器中获取所述定时任务的执行时间,并根据所述获取的执行时间在定时器框架中注册单次执行的任务;
A8、定时触发所述定时器框架,将其内所述注册的单次执行的定时任务放入后台线程池的任务队列中,由后台线程对所述放入任务队列中的定时任务进行处理;
A9、当从定时迭代器中获取到所述定时任务的下一次执行时间时,根据所述获取的下一次执行时间向所述定时框架中注册单次执行的任务。
6.根据权利要求5所述的方法,其特征在于,在所述步骤A7之前包括:
A10、主线程注册定时任务,并指定定时迭代器。
7.根据权利要求5所述的方法,其特征在于,步骤A8中所述后台线程对所述放入任务队列中的定时任务进行处理的过程具体包括:
A81、通过所述后台线程池中的线程的竞争,只有一个后台线程获取调度定时任务的权利;
A82、所述获取调度定时任务的权利的后台线程,调度并执行所述放入任务队列中的定时任务,当执行完毕后,删除所述定时任务。
8.根据权利要求5所述的方法,其特征在于,所述步骤A9具体包括:
A91、判断是否能够从定时迭代器中获取到所述定时任务的下一次执行时间,若是,则根据所述获取的下一次执行时间向所述定时框架中注册单次执行的任务;否则,结束此步骤。
CN2005100909015A 2005-08-19 2005-08-19 计划调度定时任务的方法 Expired - Fee Related CN1862575B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2005100909015A CN1862575B (zh) 2005-08-19 2005-08-19 计划调度定时任务的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2005100909015A CN1862575B (zh) 2005-08-19 2005-08-19 计划调度定时任务的方法

Publications (2)

Publication Number Publication Date
CN1862575A CN1862575A (zh) 2006-11-15
CN1862575B true CN1862575B (zh) 2011-08-03

Family

ID=37390000

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2005100909015A Expired - Fee Related CN1862575B (zh) 2005-08-19 2005-08-19 计划调度定时任务的方法

Country Status (1)

Country Link
CN (1) CN1862575B (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101207522B (zh) * 2007-12-18 2011-01-26 杭州华三通信技术有限公司 一种实现配置任务调度的方法和设备
CN101901164B (zh) * 2009-05-27 2012-07-04 北京金山软件有限公司 时间计划调度模块和方法
CN102129393A (zh) * 2011-03-09 2011-07-20 南京恩瑞特实业有限公司 通用定时任务管理的实现方法
CN103197969B (zh) * 2013-03-27 2017-02-08 百度在线网络技术(北京)有限公司 一种分布式定时任务控制装置及方法
CN103744730B (zh) * 2014-01-27 2017-01-11 北京京东尚科信息技术有限公司 一种任务调度方法和装置
CN104503761A (zh) * 2014-12-30 2015-04-08 浪潮(北京)电子信息产业有限公司 一种利用时间转盘处理定时任务的方法和装置
CN106020951A (zh) * 2016-05-12 2016-10-12 中国农业银行股份有限公司 一种任务调度方法及系统
CN106681715B (zh) * 2016-12-09 2021-05-14 北京五八信息技术有限公司 计时功能的实现方法及系统
CN109426554B (zh) * 2017-08-22 2020-10-09 中移(杭州)信息技术有限公司 一种服务器的定时实现方法及装置
CN107748695B (zh) * 2017-10-24 2020-11-24 平安科技(深圳)有限公司 定时任务处理方法、装置、存储介质和计算机设备
CN107704323A (zh) * 2017-11-07 2018-02-16 广州探迹科技有限公司 一种网络爬虫任务调度方法及装置
CN108924844B (zh) * 2018-04-23 2023-09-08 中国卫通集团股份有限公司 一种基于任务自动调度算法发射载波的方法
CN108958915A (zh) * 2018-06-28 2018-12-07 中国建设银行股份有限公司 定时任务执行方法及装置
CN110109738A (zh) * 2019-04-24 2019-08-09 上海易点时空网络有限公司 定时任务的执行方法及装置
CN110221905B (zh) * 2019-05-22 2022-02-18 网联清算有限公司 定时任务监测方法、装置、系统、设备和存储介质
CN111143043B (zh) * 2019-12-02 2021-08-10 天津同阳科技发展有限公司 基于Quartz服务的计划任务处理方法、装置、设备及介质
CN113132265B (zh) * 2021-04-16 2022-05-10 武汉光迅信息技术有限公司 一种多路以太网的多级调度方法和装置
CN116346739B (zh) * 2023-03-31 2023-12-05 南京金阵微电子技术有限公司 多队列调度方法和系统、电路及芯片
CN116431318A (zh) * 2023-06-13 2023-07-14 云账户技术(天津)有限公司 定时任务处理方法、装置、电子设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1409209A (zh) * 2001-09-24 2003-04-09 深圳市中兴通讯股份有限公司上海第二研究所 一种多任务实时操作系统的实现方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1409209A (zh) * 2001-09-24 2003-04-09 深圳市中兴通讯股份有限公司上海第二研究所 一种多任务实时操作系统的实现方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
王虎寅.WinCE线程技术在多参数监护仪软件设计中的应用.桂林电子工业学院学报25 3.2005,25(3),47-51.
王虎寅.WinCE线程技术在多参数监护仪软件设计中的应用.桂林电子工业学院学报25 3.2005,25(3),47-51. *

Also Published As

Publication number Publication date
CN1862575A (zh) 2006-11-15

Similar Documents

Publication Publication Date Title
CN1862575B (zh) 计划调度定时任务的方法
CN101739293B (zh) 一种基于多线程的卫星数据产品生产任务并行调度方法
US7761847B2 (en) Timed sequence for a graphical program
CN102129393A (zh) 通用定时任务管理的实现方法
US9104500B1 (en) Lock-free job scheduler for multi-processor systems
CN102541651B (zh) 一种嵌入式虚拟机的实时调度系统
CN104536811A (zh) 基于hive任务的任务调度方法及装置
US20090165001A1 (en) Timer Patterns For Process Models
CN103842930B (zh) 具有调度单元的微控制器
CN111143043B (zh) 基于Quartz服务的计划任务处理方法、装置、设备及介质
CN110968371A (zh) 一种数据仓库中工作流的配置方法及系统
CN110717140A (zh) 一种多用工目标的排班方法
CN103744730A (zh) 一种任务调度方法和装置
CN1862576B (zh) 获取定时任务执行时间的方法
CN110012062A (zh) 一种多机房任务调度方法、装置及存储介质
CN101833319A (zh) 面向多重入制造系统在线调度的单台设备匹配重调度方法
CN112559161A (zh) 一种任务调度方法及系统
CN108958915A (zh) 定时任务执行方法及装置
CN104049952A (zh) 直接和嵌套依赖指令的调度器中重置推测源就绪的方法
CN103324469A (zh) 定时器实现方法及装置
CN111582629A (zh) 资源调度方法、装置、设备和存储介质
CN102096857B (zh) 一种数据处理过程的协同方法和装置
JP2020537269A (ja) リアルタイムタスク間の低レイテンシ通信を保証する順序付け計画を実行するための方法
CN101206584A (zh) 无积累误差和自适应定时器实现方法
CN100363897C (zh) 一种用于嵌入式实时操作系统定时器的两级定时方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110803

Termination date: 20120819