`
yimeng528
  • 浏览: 189237 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

第三节:Quartz 执行过程

阅读更多

稍微往quartz里面看了下代码在加上自己的揣测,大概梳理下它的执行过程,是如何调度,如何执行任务的。

 

执行过程:

调度器初始化配置,比如JobStore,线程池,轮循线程,作业执行环境等

如果有任务来了就把任务扔到JobStore中,有另外的线程会根据触发机制来轮循JobStore中的job,如果满足执行条件就把它扔到线程池中执行,这样一次执行作业的任务就完成了。

 

其中

调度器类比如有:

Quartz.Impl. StdScheduler(标准调度器)

Quartz.Impl. RemoteScheduler(远程调度器)

 线程池有:

    Quartz.Simpl. SimpleThreadPool

  执行job的类有:

Quartz.Core.JobRunShell(运行我们写好的job的具体类,具体由线程池来调用执行)

Quartz.Core. QuartzScheduler

Quartz.Core.QuartzSchedulerThread

  存放job的容器有:

Quartz.Simpl.RAMJobStore(内存存储)和持久化的存储()

 触发器有:

Quartz.Impl.Triggers.CalendarIntervalTriggerImpl

Quartz.Impl.Triggers.SimpleTriggerImpl

Quartz.Impl.Triggers.DailyTimeIntervalTriggerImpl

 

然后把上面这些类套到执行过程中,如下:

首先通过调度工厂初始化简单的SimpleThreadPoolRAMJobStore最后得到StdScheduler,在通过QuartzScheduler把轮循线程QuartzSchedulerThread运行起来,当有带有触发器(SimpleTriggerImpl)的job进来时就扔到RAMJobStore中,如果满足执行条件该job就会被扔到SimpleThreadPool中由JobRunShell完成执行,这样一次执行作业的任务就完成了。

 

总结:了解了Quartz的整个执行过程对继续往下看来说是很重要的,但是上面好多地方都非常模糊的是由自己推测的,好多是不准确的,不管怎么今天接触到了Quartz 中大部分重要的类。

分享到:
评论

相关推荐

    4个案例:Quartz2D图片处理

    在第三个案例中,我们将探讨图像剪裁功能。Quartz2D的`CGContextClipToMask`方法可以用于创建图像的特定部分的剪裁。首先,我们需要定义一个矩形或形状作为剪裁区域,然后使用该区域创建一个遮罩。接着,在CGContext...

    Spring线程时间配置:Quartz和CronExpression

    \* 6#3"**: 每月第三个星期五上午10:15执行一次。 通过这些示例可以看出,Cron表达式非常灵活,可以根据不同的需求定义各种复杂的调度规则。 #### 四、Spring中配置Quartz 在Spring中配置Quartz主要包括以下几个...

    quartz-2.3.2-API文档-中文版.zip

    赠送jar包:quartz-2.3.2.jar; 赠送原API文档:quartz-2.3.2-javadoc.jar; 赠送源代码:quartz-2.3.2-sources.jar; 赠送Maven依赖信息文件:quartz-2.3.2.pom; 包含翻译后的API文档:quartz-2.3.2-javadoc-API...

    quartz-2.3.0-API文档-中文版.zip

    赠送jar包:quartz-2.3.0.jar; 赠送原API文档:quartz-2.3.0-javadoc.jar; 赠送源代码:quartz-2.3.0-sources.jar; 赠送Maven依赖信息文件:quartz-2.3.0.pom; 包含翻译后的API文档:quartz-2.3.0-javadoc-API...

    quartz-2.3.2-API文档-中英对照版.zip

    赠送jar包:quartz-2.3.2.jar; 赠送原API文档:quartz-2.3.2-javadoc.jar; 赠送源代码:quartz-2.3.2-sources.jar; 赠送Maven依赖信息文件:quartz-2.3.2.pom; 包含翻译后的API文档:quartz-2.3.2-javadoc-API...

    quartz-2.3.0-API文档-中英对照版.zip

    赠送jar包:quartz-2.3.0.jar; 赠送原API文档:quartz-2.3.0-javadoc.jar; 赠送源代码:quartz-2.3.0-sources.jar; 赠送Maven依赖信息文件:quartz-2.3.0.pom; 包含翻译后的API文档:quartz-2.3.0-javadoc-API...

    quartz2.2.3实战

    - `督办系统消息提醒规则(截止2017.3.8).docx` 文件可能是某个实际项目中使用 Quartz 进行消息提醒的规则文档,可以从中学习如何将 Quartz 应用于业务场景。 5. **实战技巧** - **错误处理**:合理处理 Job 执行...

    quartz2.2.1帮助手册

    Quartz 2.2.1 是一个功能丰富的Java作业调度框架,它允许开发人员在应用程序中安排任务执行,实现复杂的定时任务逻辑。这个开源项目旨在提供一个简单、可扩展且可靠的解决方案,使得开发者能够轻松地将定时任务集成...

    quartz指南,Quartz 工程

    文件里面包括 1:Quartz开发指南.pdf 2:Quartz从入门到进阶.pdf 3:QuartzBeginnerExample一个附带的工程例子 4:quartz-1.6.1.zip Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它...

    quartz-1.6.1-API文档-中英对照版.zip

    赠送jar包:quartz-1.6.1.jar 赠送原API文档:quartz-1.6.1-javadoc.jar 包含翻译后的API文档:quartz-1.6.1-javadoc-API文档-中文(简体)-英语-对照版.zip 对应Maven信息:groupId:org.opensymphony.quartz,...

    quartz-2.2.1相关jar

    6. **错误处理**:Quartz 提供了JobExecutionException,当作业执行过程中发生错误时,可以捕获并处理。 在"lib"目录下,通常包含以下核心组件和依赖的JAR文件: - `quartz.jar`:这是Quartz的主要库,包含了所有...

    quartz 随tomcat启动执行一次

    ### 关于 Quartz 随 Tomcat 启动执行一次的知识点 #### 1. Quartz 概述 Quartz 是一个开源的作业调度框架,能够触发在指定时间执行的任务(也称为作业)。它提供了丰富的调度器功能,如支持复杂的循环调度、支持...

    spring java 定时器 执行两次 quartz

    3. **线程安全**:如果你的任务逻辑不是线程安全的,可能会因为并发执行导致问题。 4. **Spring重启**:在某些情况下,如应用重启或Spring容器重建,可能导致任务重新注册和执行。 解决这个问题的方法包括: - ...

    quartz.rar

    8. **错误处理**:Quartz 支持异常处理机制,当任务执行过程中出现错误,可以设定回调函数进行错误处理。 9. **可扩展性**:Quartz 允许你创建自定义的 Job 类和 Trigger 类,满足各种复杂需求。 10. **社区活跃**...

    Quartz开发使用说明文档

    Quartz开发使用说明文档 Quartz是一个功能强大且广泛应用的开源作业调度框架,主要用于实现业务逻辑中的定时任务、批处理、事件触发等场景。Quartz的主要特点是高可用性、可扩展性、灵活配置、支持多种数据库和集群...

    Quartz.net作业调度自定义定时执行任务多任务执行c#

    Quartz.NET是一个强大的开源作业调度框架,用于在.NET环境中创建和执行定时任务。它提供了高度灵活的调度功能,使得开发者可以轻松地定义和控制任务的执行时间。在"Quartz.net作业调度自定义定时执行任务多任务执行...

    任务调度开源框架Quartz

    3. **集群支持**:Quartz可以部署在集群环境中,多个节点共享同一份调度信息,当一个节点失败时,其他节点可以接管调度任务,提供高可用性。 4. **插件友好**:Quartz允许开发人员通过插件扩展其功能,例如日志插件...

    spring注解Quartz定时执行功能

    Quartz是一个开源的作业调度框架,它允许程序创建和管理任务,以便在特定时间自动执行。Spring通过其优秀的依赖注入(DI)和AOP(面向切面编程)特性,与Quartz相结合,简化了定时任务的配置和管理。下面我们将深入...

    spring2.0 Quartz 执行每天定时任务 普通普是执行任务

    3. 创建作业类:定义一个实现`org.quartz.Job`接口的类,重写`execute(JobExecutionContext context)`方法,这个方法是实际执行的任务逻辑。 ```java public class DailyTask implements Job { @Override public ...

    springboot整合quartz定时任务yml文件配置方式

    在Spring Boot应用中整合Quartz定时任务是一种常见的需求,它可以帮助我们执行周期性的后台任务,如数据同步、报表生成等。Spring Boot与Quartz的结合提供了便捷的配置方式,特别是通过YAML(YAML Ain't Markup ...

Global site tag (gtag.js) - Google Analytics