CN102129393A - 通用定时任务管理的实现方法 - Google Patents
通用定时任务管理的实现方法 Download PDFInfo
- Publication number
- CN102129393A CN102129393A CN2011100554367A CN201110055436A CN102129393A CN 102129393 A CN102129393 A CN 102129393A CN 2011100554367 A CN2011100554367 A CN 2011100554367A CN 201110055436 A CN201110055436 A CN 201110055436A CN 102129393 A CN102129393 A CN 102129393A
- Authority
- CN
- China
- Prior art keywords
- task
- queue
- formation
- 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.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
一种通用定时任务管理的实现方法,其特征是它包括以下步骤:首先,设置一个管理器,该管理器由一个同步有序队列和多个生成者、消费者线程组成;其次,使上述队列管理器通过一个同步有序队列对其中的不同定时任务进行管理,队列中的任务按照执行时间进行升序排序,每次往队列中添加任务时,会触发一个通知,并且通过插入排序保证队列的排序不变;第三,消费者线程在启动时,首先检查队列中是否有定期的任务,如果没有,则阻塞线程,等待任务插入时被通知唤醒,重新检查队列;如果发现有任务,则查看任务是不是已经到期了,如果还没有到期,则计算到期时间,开始阻塞线程,并限时等待。如果等待时限到了,或者被通知唤醒则重新检查队列;在每次检查队列的时候,如果发现到期任务则立即执行;对于周期性任务,则在每次执行之后会修改开始执行时间,然后再次插入队列中,等待被调用执行。本发明具有通用高效的特点。
Description
技术领域
本发明涉及一种在定时系统中对可配置的任务进行定时管理的方法,尤其是一种适合轻量级应用场合的定时任务触发的方法,具体地说是一种通用定时任务管理的实现方法。
背景技术
众所周知,在信息系统中,需要定期执行一些作业任务,这些任务可以通过一些作业调度器(如:quartz、cron)来完成,这类作业调度器通过读取解析cron表达式来定期执行注册的任务。这些调度器功能齐全,但是相对复杂,庞大,在一些轻量级的应用中并不合适。
另外,操作系统也提供了一类定时器,它通过底层的信号触发机制来定时的发送某个特殊的信号,然后应用程序通过捕获该信号来执行定期任务。这种定时器的缺点就是没有队列的概念,所以每个定时器只能定期执行一个任务,如果要执行多个不同的任务就只能注册多个定时器,而且不能保证每个信号都能够被捕获到。
所以根据定时系统业务需求需要设计出一种任务管理器。该任务管理器要求具备定时、高效、通用的特点,同时又相对简单,能够轻松的嵌入到各种应用程序中去。
发明内容
本发明的目的是针对目前轻量级应用系统中实现定时管理时如采用系统自带的定时器则会造成编程复杂或难以保证每个定时信号均能按时触发的问题,发明一种通用性强,针对性好,易于移植和开发的通用定时任务管理器并通过该管理器实现定时管理。
本发明的技术方案是:
一种通用定时任务管理的实现方法,其特征是它包括以下步骤:
首先,设置一个管理器,该管理器由一个同步有序队列和多个生成者、消费者线程组成;定时任务由生产者存放在队列中形成队列管理器,然后由消费者线程定时执行;
其次,使上述队列管理器通过一个同步有序队列对其中的不同定时任务进行管理,队列中的任务按照执行时间进行升序排序,每次往队列中添加任务时,会触发一个通知,并且通过插入排序保证队列的排序不变。该队列通过互斥量来保证每次只有一个线程对其进行操作;
第三,消费者线程在启动时,首先检查队列中是否有定期的任务,如果没有,则阻塞线程,等待任务插入时被通知唤醒,重新检查队列;如果发现有任务,则查看任务是不是已经到期了,如果还没有到期,则计算到期时间,开始阻塞线程,并限时等待。如果等待时限到了,或者被通知唤醒则重新检查队列;在每次检查队列的时候,如果发现到期任务则立即执行;对于周期性任务,则在每次执行之后会修改开始执行时间,然后再次插入队列中,等待被调用执行。
在每次检查队列中有没有到期的任务时,只需要检查队首的元素就可以判断有没有任务到期;因为队列中的任务时按照到期时间升序排列的,如果队首任务没有到期,则队首之后的任务也肯定没有到期,所以消费者线程每次检查队列时,只需要检查队首的任务就可以了,而不是检查所有的任务。
本发明的有益效果:
利用本发明的方法只需通过继承一个定时任务类,并改写其虚函数就可以将其放入队列中被定时执行。操作简单,集成到应用程序中也很方便。
本发明可以有一个或者多个消费者线程,从同一个队列中获取任务并执行,这样可以按照业务需求任意设置执行线程数,而不是一种任务对应一个线程,这样就使得其中的每一条线程都可以得到充分的利用。
本发明还具有以下功能:
●定时
定时主要体现在任务能定时被执行。
●通用
通用主要体现在任务管理器支持不同类型的任务、以及相同类型的周期性或非周期性任务。
●高效
高效主要体现在采用事件触发机制并支持并发处理。
附图说明
图1是本发明的任务管理器的逻辑流程图。
图2是本发明的任务管理器的实现定时触发的过程示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的说明。
如图1、2所示。
一种通用定时任务管理的实现方法,它包括以下步骤:
首先,设置一个管理器(如图1所示),该管理器由一个同步有序队列和多个生成者、消费者线程组成;定时任务由生产者存放在队列中形成队列管理器,然后由消费者线程定时执行;
其次,使上述队列管理器通过一个同步有序队列对其中的不同定时任务进行管理,队列中的任务按照执行时间进行升序排序,每次往队列中添加任务时,会触发一个通知,并且通过插入排序保证队列的排序不变。该队列通过互斥量来保证每次只有一个线程对其进行操作;
具体的定时触发流程如图2所示,生成者线程首先通过配置文件来生成一个定时任务,然后将其插入到同步有序任务队列中去。当有任务被插入到队列中去的时候,都会触发一个通知,唤醒那些等待任务到来的线程。
然后开启若干个消费者线程,当线程检查队列,发现首个任务没有到期时,就会计算到期的时间,然后阻塞线程,直到时间到期或者被其他线程唤醒;否则立即执行任务。任务在执行完一次之后,会判断是不是周期性任务,如果是周期性任务,则修改下次到期执行时间,并判断有没有过期,将未过期的任务再次插入队列中去,然后重新检查队列,寻找下一个到期任务。如果,队列为空,则会一直处于阻塞状态,直到被生产者线程唤醒;否则,检查队列首个定时任务。
在每次检查队列中有没有到期的任务时,只需要检查队首的元素就可以判断有没有任务到期;因为队列中的任务时按照到期时间升序排列的,如果队首任务没有到期,则队首之后的任务也肯定没有到期,所以消费者线程每次检查队列时,只需要检查队首的任务就可以了,而不是检查所有的任务。
本发明未涉及部分均与现有技术相同或可采用现有技术加以实现。
Claims (2)
1.一种通用定时任务管理的实现方法,其特征是它包括以下步骤:
首先,设置一个管理器,该管理器由一个同步有序队列和多个生成者、消费者线程组成;定时任务由生产者存放在队列中形成队列管理器,然后由消费者线程定时执行;
其次,使上述队列管理器通过一个同步有序队列对其中的不同定时任务进行管理,队列中的任务按照执行时间进行升序排序,每次往队列中添加任务时,会触发一个通知,并且通过插入排序保证队列的排序不变;该队列通过互斥量来保证每次只有一个线程对其进行操作;
第三,消费者线程在启动时,首先检查队列中是否有定期的任务,如果没有,则阻塞线程,等待任务插入时被通知唤醒,重新检查队列;如果发现有任务,则查看任务是不是已经到期了,如果还没有到期,则计算到期时间,开始阻塞线程,并限时等待;如果等待时限到了,或者被通知唤醒则重新检查队列;在每次检查队列的时候,如果发现到期任务则立即执行;对于周期性任务,则在每次执行之后会修改开始执行时间,然后再次插入队列中,等待被调用执行。
2.根据权利要求1所述的通用定时任务管理的实现方法,其特征是在每次检查队列中有没有到期的任务时,只需要检查队首的元素就可以判断有没有任务到期;因为队列中的任务时按照到期时间升序排列的,如果队首任务没有到期,则队首之后的任务也肯定没有到期,所以消费者线程每次检查队列时,只需要检查队首的任务就可以了,而不是检查所有的任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100554367A CN102129393A (zh) | 2011-03-09 | 2011-03-09 | 通用定时任务管理的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100554367A CN102129393A (zh) | 2011-03-09 | 2011-03-09 | 通用定时任务管理的实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102129393A true CN102129393A (zh) | 2011-07-20 |
Family
ID=44267482
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011100554367A Pending CN102129393A (zh) | 2011-03-09 | 2011-03-09 | 通用定时任务管理的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102129393A (zh) |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102331950A (zh) * | 2011-09-15 | 2012-01-25 | 北京安天电子设备有限公司 | 基于Linux定时任务的守护进程实现方法和系统 |
CN102521104A (zh) * | 2011-12-13 | 2012-06-27 | 南京恩瑞特实业有限公司 | 高安全性系统运行进度的监控方法 |
CN103106222A (zh) * | 2011-11-15 | 2013-05-15 | 阿里巴巴集团控股有限公司 | 定时器的处理方法及装置 |
CN103116523A (zh) * | 2013-02-27 | 2013-05-22 | 北京经纬恒润科技有限公司 | 一种报警检测及响应方法、装置 |
CN103530179A (zh) * | 2013-09-30 | 2014-01-22 | 大唐移动通信设备有限公司 | 一种定时任务的处理方法及装置 |
CN105119992A (zh) * | 2015-08-24 | 2015-12-02 | 用友网络科技股份有限公司 | 分布式任务执行装置和方法 |
CN105450737A (zh) * | 2015-11-13 | 2016-03-30 | 网易(杭州)网络有限公司 | 一种数据处理方法、装置和系统 |
CN105630585A (zh) * | 2015-12-21 | 2016-06-01 | 北京奇虎科技有限公司 | 周期性任务的处理方法及装置 |
CN106020951A (zh) * | 2016-05-12 | 2016-10-12 | 中国农业银行股份有限公司 | 一种任务调度方法及系统 |
CN106775620A (zh) * | 2016-11-14 | 2017-05-31 | 武汉斗鱼网络科技有限公司 | 一种定时方法及装置 |
CN106775965A (zh) * | 2016-11-17 | 2017-05-31 | 腾讯科技(深圳)有限公司 | 一种定时任务的处理方法及装置 |
CN107015849A (zh) * | 2017-04-07 | 2017-08-04 | 北京奇虎科技有限公司 | 定时任务的提醒方法及装置 |
CN107391271A (zh) * | 2017-05-17 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 一种基于消息队列系统的延时任务触发方法和装置 |
CN107797856A (zh) * | 2017-09-27 | 2018-03-13 | 天津同阳科技发展有限公司 | 基于windows服务的计划任务管控方法、装置及存储介质 |
CN107871194A (zh) * | 2016-09-28 | 2018-04-03 | 北京北方华创微电子装备有限公司 | 一种生产线设备的调度方法和装置 |
CN107948224A (zh) * | 2016-10-12 | 2018-04-20 | 北京京东尚科信息技术有限公司 | 客户端请求的超时处理方法和装置 |
CN107967150A (zh) * | 2017-12-19 | 2018-04-27 | 郑州云海信息技术有限公司 | 一种线程执行顺序确定方法、装置、设备及存储介质 |
CN108958915A (zh) * | 2018-06-28 | 2018-12-07 | 中国建设银行股份有限公司 | 定时任务执行方法及装置 |
CN108958906A (zh) * | 2017-05-27 | 2018-12-07 | 北京嘀嘀无限科技发展有限公司 | 任务处理方法、装置及设备 |
CN109976895A (zh) * | 2019-04-09 | 2019-07-05 | 苏州浪潮智能科技有限公司 | 一种数据库的多任务并发处理方法和装置 |
CN110018865A (zh) * | 2018-01-10 | 2019-07-16 | 武汉斗鱼网络科技有限公司 | 定时器设置方法、存储介质、电子设备及系统 |
CN110414697A (zh) * | 2019-08-01 | 2019-11-05 | 南京信业能源科技有限公司 | 一种基于quartz的垃圾焚烧厂定期工作管理方法 |
CN110569977A (zh) * | 2019-07-23 | 2019-12-13 | 北京航天自动控制研究所 | 一种面向实时专家系统并行时限推理的可复用定时方法 |
CN112737965A (zh) * | 2020-12-31 | 2021-04-30 | 网络通信与安全紫金山实验室 | 解决并发访问网元受限问题的方法、系统及计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1828541A (zh) * | 2006-04-07 | 2006-09-06 | 浙江大学 | Java操作系统中定时任务的实现方法 |
CN1862575A (zh) * | 2005-08-19 | 2006-11-15 | 华为技术有限公司 | 计划调度定时任务的方法 |
CN1873615A (zh) * | 2006-01-20 | 2006-12-06 | 华为技术有限公司 | 一种定时器任务服务方法 |
-
2011
- 2011-03-09 CN CN2011100554367A patent/CN102129393A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1862575A (zh) * | 2005-08-19 | 2006-11-15 | 华为技术有限公司 | 计划调度定时任务的方法 |
CN1873615A (zh) * | 2006-01-20 | 2006-12-06 | 华为技术有限公司 | 一种定时器任务服务方法 |
CN1828541A (zh) * | 2006-04-07 | 2006-09-06 | 浙江大学 | Java操作系统中定时任务的实现方法 |
Cited By (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102331950B (zh) * | 2011-09-15 | 2017-02-22 | 北京安天电子设备有限公司 | 基于Linux操作系统定时任务的守护进程实现方法和系统 |
CN102331950A (zh) * | 2011-09-15 | 2012-01-25 | 北京安天电子设备有限公司 | 基于Linux定时任务的守护进程实现方法和系统 |
CN103106222A (zh) * | 2011-11-15 | 2013-05-15 | 阿里巴巴集团控股有限公司 | 定时器的处理方法及装置 |
CN103106222B (zh) * | 2011-11-15 | 2017-03-08 | 阿里巴巴集团控股有限公司 | 定时器的处理方法及装置 |
CN102521104A (zh) * | 2011-12-13 | 2012-06-27 | 南京恩瑞特实业有限公司 | 高安全性系统运行进度的监控方法 |
CN103116523A (zh) * | 2013-02-27 | 2013-05-22 | 北京经纬恒润科技有限公司 | 一种报警检测及响应方法、装置 |
CN103530179A (zh) * | 2013-09-30 | 2014-01-22 | 大唐移动通信设备有限公司 | 一种定时任务的处理方法及装置 |
CN105119992A (zh) * | 2015-08-24 | 2015-12-02 | 用友网络科技股份有限公司 | 分布式任务执行装置和方法 |
CN105450737A (zh) * | 2015-11-13 | 2016-03-30 | 网易(杭州)网络有限公司 | 一种数据处理方法、装置和系统 |
CN105450737B (zh) * | 2015-11-13 | 2019-02-12 | 网易(杭州)网络有限公司 | 一种数据处理方法、装置和系统 |
CN105630585A (zh) * | 2015-12-21 | 2016-06-01 | 北京奇虎科技有限公司 | 周期性任务的处理方法及装置 |
WO2017107843A1 (zh) * | 2015-12-21 | 2017-06-29 | 北京奇虎科技有限公司 | 周期性任务的处理方法和装置及计算机程序和可读介质 |
CN106020951A (zh) * | 2016-05-12 | 2016-10-12 | 中国农业银行股份有限公司 | 一种任务调度方法及系统 |
WO2018058842A1 (zh) * | 2016-09-28 | 2018-04-05 | 北京北方微电子基地设备工艺研究中心有限责任公司 | 一种生产线设备的调度方法和装置 |
CN107871194B (zh) * | 2016-09-28 | 2020-10-16 | 北京北方华创微电子装备有限公司 | 一种生产线设备的调度方法和装置 |
US11990355B2 (en) | 2016-09-28 | 2024-05-21 | Beijing Naura Microelectronics Equipment Co., Ltd. | Method and system for scheduling apparatuses on production line |
CN107871194A (zh) * | 2016-09-28 | 2018-04-03 | 北京北方华创微电子装备有限公司 | 一种生产线设备的调度方法和装置 |
CN107948224A (zh) * | 2016-10-12 | 2018-04-20 | 北京京东尚科信息技术有限公司 | 客户端请求的超时处理方法和装置 |
CN106775620A (zh) * | 2016-11-14 | 2017-05-31 | 武汉斗鱼网络科技有限公司 | 一种定时方法及装置 |
CN106775620B (zh) * | 2016-11-14 | 2020-05-12 | 武汉斗鱼网络科技有限公司 | 一种定时方法及装置 |
CN106775965A (zh) * | 2016-11-17 | 2017-05-31 | 腾讯科技(深圳)有限公司 | 一种定时任务的处理方法及装置 |
CN106775965B (zh) * | 2016-11-17 | 2021-03-23 | 腾讯科技(深圳)有限公司 | 一种定时任务的处理方法及装置 |
CN107015849A (zh) * | 2017-04-07 | 2017-08-04 | 北京奇虎科技有限公司 | 定时任务的提醒方法及装置 |
CN107015849B (zh) * | 2017-04-07 | 2020-12-04 | 北京奇虎科技有限公司 | 定时任务的提醒方法及装置 |
CN107391271A (zh) * | 2017-05-17 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 一种基于消息队列系统的延时任务触发方法和装置 |
CN107391271B (zh) * | 2017-05-17 | 2020-10-20 | 创新先进技术有限公司 | 一种基于消息队列系统的延时任务触发方法和装置 |
CN108958906A (zh) * | 2017-05-27 | 2018-12-07 | 北京嘀嘀无限科技发展有限公司 | 任务处理方法、装置及设备 |
CN107797856A (zh) * | 2017-09-27 | 2018-03-13 | 天津同阳科技发展有限公司 | 基于windows服务的计划任务管控方法、装置及存储介质 |
CN107797856B (zh) * | 2017-09-27 | 2020-12-18 | 天津同阳科技发展有限公司 | 基于windows服务的计划任务管控方法、装置及存储介质 |
CN107967150A (zh) * | 2017-12-19 | 2018-04-27 | 郑州云海信息技术有限公司 | 一种线程执行顺序确定方法、装置、设备及存储介质 |
CN107967150B (zh) * | 2017-12-19 | 2021-10-15 | 郑州云海信息技术有限公司 | 一种线程执行顺序确定方法、装置、设备及存储介质 |
CN110018865A (zh) * | 2018-01-10 | 2019-07-16 | 武汉斗鱼网络科技有限公司 | 定时器设置方法、存储介质、电子设备及系统 |
CN108958915A (zh) * | 2018-06-28 | 2018-12-07 | 中国建设银行股份有限公司 | 定时任务执行方法及装置 |
CN109976895A (zh) * | 2019-04-09 | 2019-07-05 | 苏州浪潮智能科技有限公司 | 一种数据库的多任务并发处理方法和装置 |
CN110569977A (zh) * | 2019-07-23 | 2019-12-13 | 北京航天自动控制研究所 | 一种面向实时专家系统并行时限推理的可复用定时方法 |
CN110569977B (zh) * | 2019-07-23 | 2022-04-22 | 北京航天自动控制研究所 | 一种面向实时专家系统并行时限推理的可复用定时方法 |
CN110414697A (zh) * | 2019-08-01 | 2019-11-05 | 南京信业能源科技有限公司 | 一种基于quartz的垃圾焚烧厂定期工作管理方法 |
CN112737965A (zh) * | 2020-12-31 | 2021-04-30 | 网络通信与安全紫金山实验室 | 解决并发访问网元受限问题的方法、系统及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102129393A (zh) | 通用定时任务管理的实现方法 | |
Schranzhofer et al. | Timing analysis for TDMA arbitration in resource sharing systems | |
CN1862575B (zh) | 计划调度定时任务的方法 | |
US20190196881A1 (en) | Deterministic parallelization through atomic task computation | |
Cucu-Grosjean et al. | Exact schedulability tests for real-time scheduling of periodic tasks on unrelated multiprocessor platforms | |
CN101739293A (zh) | 一种基于多线程的卫星数据产品生产任务并行调度方法 | |
CN102270156A (zh) | 一种实时嵌入式系统定时器管理方法 | |
CN103870327A (zh) | 一种实时多任务调度方法和装置 | |
KR20120070303A (ko) | 실시간 멀티코어 시스템의 동기화 스케쥴링 장치 및 방법 | |
CN103744730B (zh) | 一种任务调度方法和装置 | |
CN105279261A (zh) | 动态可扩展数据库归档方法和系统 | |
CN106886450A (zh) | 任务调度方法和系统 | |
CN102272688A (zh) | 无主从配置的自动多器件事件同步和排序技术 | |
CN112445598A (zh) | 一种基于quartz的任务调度方法、装置、电子设备以及介质 | |
CN109298929A (zh) | 定时任务执行时间推荐方法、装置、设备和存储介质 | |
CN104049952A (zh) | 直接和嵌套依赖指令的调度器中重置推测源就绪的方法 | |
Baleani et al. | Efficient embedded software design with synchronous models | |
CN105450737A (zh) | 一种数据处理方法、装置和系统 | |
Matsikoudis et al. | On the schedulability of real-time discrete-event systems | |
JP2020173622A (ja) | 並列タスクスケジューリング方法 | |
CN105068861A (zh) | 一种事务执行方法及装置 | |
CN115469989A (zh) | 分布式批量任务调度方法及系统 | |
Wong et al. | Priority-based functional reactive programming (P-FRP) using deferred abort | |
Gao et al. | Modeling and verifying uncertainty-aware timing behaviors using parametric logical time constraint | |
Guo et al. | Implementing mixed-criticality systems upon a preemptive varying-speed processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C53 | Correction of patent of invention or patent application | ||
CB03 | Change of inventor or designer information |
Inventor after: Liu Xiaoming Inventor after: Wang Hui Inventor before: Liu Xiaoming |
|
COR | Change of bibliographic data |
Free format text: CORRECT: INVENTOR; FROM: LIU XIAOMING TO: LIU XIAOMING WANG HUI |
|
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20110720 |