`
agilesc
  • 浏览: 8052 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于QUARTZ有状态任务全面解析

阅读更多
前端时间由于工作需要研究了下QUARTZ这个调度器,在网上看了蛮多的资料,其中说的最少最不明白的就是关于QUARTZ的有状态和无状态的 JOB,QUARTZ是怎么处理的,网友们基本上都是说有状态的JOB时,当这次任务没有完成,而下次触发的时间又来了时,都认为是挂起,等待,要考虑很复杂的情况,本人看了QUARTZ的源码的实现方案,现将QUARTZ的实现机制描述如下:

QUARTZ的有状态的JOB始终只有一个任务在运行,不会出现同一个JOB并发的情况,QUARTZ执行一个JOB时,会判断该JOB是不是有状态的,如果是有状态的,则把给JOB从存储JOB的列表中移除,保存到另一个集合里,当然要修改该JOB的状态,等到该JOB运行完成时,再把该JOB从集合里删除,重新加入到JOB列表中,这样的话,QUARTZ就不怕由于这个JOB运行太长的时间,而导致下次运行时间到达时又触发了该JOB,因为该JOB已经不在JOB列表[b][/b]中了,找不到触发器对应的JOB,只能返回空的JOB ,就直接返回了。不会出现任何的等待挂起问题。假如说一个JOB运行了执行的时间很长,而错过了N次触发,侧等到该JOB运行完,则下次触发的时间是(N+1)*每次触发的时间。

至于怎么实现有状态的JOB就不在这里说了,哈哈

写下这个也因为自己在之前也找了好多资料,都说的很模糊,希望能绑定需要用QUARTZ的朋友。
0
0
分享到:
评论
1 楼 2110901055 2012-08-20  
您好,我现在发现我的任务还没有到达指定的时间,数据库中trigger_state字段怎么就改成“执行中”,等到了指定时间后变成“等待”,我用的是2.0版本,这是BUG还是?谢谢!

相关推荐

    Quartz.NET定时任务例子源代码(C#)

    总之,"Quartz.NET定时任务例子源代码(C#)" 提供了一个全面的学习资源,涵盖了Quartz.NET的基础用法和实践技巧。通过分析这些文件,开发者可以深入理解如何在.NET项目中利用Quartz.NET构建稳定可靠的定时任务系统。

    任务调度开源框架Quartz

    文档可能还会涵盖Quartz的源码分析,这对于想要定制或优化Quartz的开发者来说尤其有价值。 总之,Quartz作为一款强大的任务调度框架,无论是在小型项目还是大型企业级应用中,都能够提供可靠的定时任务管理解决方案...

    使用Quartz实现定时功能

    Quartz是一个全面的、开源的作业调度器,被广泛应用于Java应用程序中进行任务调度。Quartz提供了强大的调度能力,可以满足不同场景的需求,比如定时执行任务、周期性任务等。 #### 二、Quartz核心概念 1. **Job...

    web项目集成quartz实例(9个)

    在Web项目中集成Quartz,可以灵活地管理后台任务,例如定期备份数据库、发送邮件、执行统计分析等。下面将根据提供的文件名,从简单到复杂,逐一解析Quartz在Web项目中的集成与配置。 1. **quartz01** 这个部分...

    quartz定时器源码jar包下载

    Quartz是一款开源的作业调度框架,它为Java应用程序提供了强大的定时任务管理能力。作为一个专业的IT行业大师,我很高兴为你解析Quartz定时器的核心概念、功能以及如何通过源码学习。 Quartz定时器允许开发者创建、...

    Quartz.NET 官方源码及演示例子

    Quartz.NET 是一个开源的作业调度框架,它允许开发者在.NET...通过以上步骤,你可以全面掌握Quartz.NET的使用和开发,不仅能够利用它为你的应用程序添加定时任务功能,还能深入了解其底层实现,提升你的.NET开发技能。

    quartz2.1.5 实例

    总结来说,Quartz 2.1.5实例提供了一个全面的视角,展示如何利用Quartz进行任务调度,包括基础API的使用、配置文件的设定、与Spring的整合以及任务的持久化。理解并掌握这些知识点,对于任何需要执行定时任务的Java...

    quartz需要的jar

    5. **插件与配置**:Quartz支持多种插件,如JobStore用于存储Job和Trigger的状态,有内存型和数据库型等多种实现。配置文件`quartz.properties`可以定制Scheduler的行为。 6. **并发与线程**:Quartz基于线程池执行...

    Spring-Quartz

    Job可以通过实现`org.quartz.Job`接口或继承`org.springframework.scheduling.quartz.StatefulJob`(如果需要状态性)或`org.springframework.scheduling.quartz.SimpleJob`(简单任务)来定义。Trigger则通过...

    spring_quartz项目可以直接运行

    5. **监控任务**:可以使用 Quartz 提供的监控界面或者 Spring 提供的监控工具来查看任务的执行状态和日志。 **六、示例代码** ```java // Job 示例 public class MyJob implements Job { @Override public void...

    springboot-quartz-elasticsearch

    标题 "springboot-quartz-elasticsearch" 指的是一个整合了Spring Boot、Quartz定时任务框架和Elasticsearch搜索引擎的项目。这个项目提供了一个实践性的示例,用于演示如何在Spring Boot应用程序中集成并使用这两种...

    使用quartz做的双层定时器

    Quartz是一款开源的作业调度框架,它允许开发者创建、安排和执行各种作业任务。在Java应用中,Quartz常被用来实现复杂的定时任务需求。"使用quartz做的双层定时器"指的是通过Quartz实现的多层级定时任务系统,这种...

    pring+quartz+jdbc文档

    ### Spring + Quartz + JDBC 实现任务调度系统的详细解析 #### 一、项目背景与目标 在项目“大公鸡”(Rooster)中,我们旨在通过整合Spring框架、Quartz调度器以及JDBC技术来构建一个高效且灵活的任务调度系统。...

    Storm Executor Task QuartzJob流式框架定时任务处理框架

    4. 监控和日志:实施全面的监控系统,记录并分析任务执行情况,以便于调优和问题排查。 总之,“Storm Executor Task QuartzJob流式框架定时任务处理框架”是一种结合实时处理和定时批处理的强大工具,适合处理大...

    Quartz Spring整合——附带webservice Demo

    通过分析和运行这个Demo,你可以深入理解Quartz如何在Spring环境中调度任务,以及如何通过Quartz调用Web服务。这有助于你构建自己的定时任务系统,例如定期数据同步、报表生成、系统维护等场景。

    Quartz Job Scheduling Framework第5章翻译初稿

    通过深入学习这一章,开发者能够更全面地掌握Quartz框架,从而在实际项目中构建出高效、可靠的定时任务系统。 总结起来,Quartz Job Scheduling Framework为Java开发者提供了强大的任务调度工具,尤其是Cron ...

    Spring + quartz

    标题 "Spring + quartz" 暗示了我们讨论的主题是关于如何在Java应用程序中结合Spring框架与Quartz库来实现任务调度。Quartz是一个开源的作业调度框架,它允许开发者安排任务在特定时间执行,而Spring框架则为Java...

    JAVA定时任务

    通过以上内容,我们对Java定时任务有了全面的认识,无论是简单的`ScheduledExecutorService`,还是复杂的Quartz,都能满足不同场景下的需求。在实际开发中,我们需要根据项目规模和需求选择合适的方法,并进行合理的...

Global site tag (gtag.js) - Google Analytics