稍微往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
然后把上面这些类套到执行过程中,如下:
首先通过调度工厂初始化简单的SimpleThreadPool,RAMJobStore最后得到StdScheduler,在通过QuartzScheduler把轮循线程QuartzSchedulerThread运行起来,当有带有触发器(SimpleTriggerImpl)的job进来时就扔到RAMJobStore中,如果满足执行条件该job就会被扔到SimpleThreadPool中由JobRunShell完成执行,这样一次执行作业的任务就完成了。
总结:了解了Quartz的整个执行过程对继续往下看来说是很重要的,但是上面好多地方都非常模糊的是由自己推测的,好多是不准确的,不管怎么今天接触到了Quartz 中大部分重要的类。
相关推荐
在第三个案例中,我们将探讨图像剪裁功能。Quartz2D的`CGContextClipToMask`方法可以用于创建图像的特定部分的剪裁。首先,我们需要定义一个矩形或形状作为剪裁区域,然后使用该区域创建一个遮罩。接着,在CGContext...
\* 6#3"**: 每月第三个星期五上午10:15执行一次。 通过这些示例可以看出,Cron表达式非常灵活,可以根据不同的需求定义各种复杂的调度规则。 #### 四、Spring中配置Quartz 在Spring中配置Quartz主要包括以下几个...
赠送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...
赠送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...
赠送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...
赠送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...
- `督办系统消息提醒规则(截止2017.3.8).docx` 文件可能是某个实际项目中使用 Quartz 进行消息提醒的规则文档,可以从中学习如何将 Quartz 应用于业务场景。 5. **实战技巧** - **错误处理**:合理处理 Job 执行...
Quartz 2.2.1 是一个功能丰富的Java作业调度框架,它允许开发人员在应用程序中安排任务执行,实现复杂的定时任务逻辑。这个开源项目旨在提供一个简单、可扩展且可靠的解决方案,使得开发者能够轻松地将定时任务集成...
文件里面包括 1:Quartz开发指南.pdf 2:Quartz从入门到进阶.pdf 3:QuartzBeginnerExample一个附带的工程例子 4:quartz-1.6.1.zip Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它...
赠送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,...
6. **错误处理**:Quartz 提供了JobExecutionException,当作业执行过程中发生错误时,可以捕获并处理。 在"lib"目录下,通常包含以下核心组件和依赖的JAR文件: - `quartz.jar`:这是Quartz的主要库,包含了所有...
### 关于 Quartz 随 Tomcat 启动执行一次的知识点 #### 1. Quartz 概述 Quartz 是一个开源的作业调度框架,能够触发在指定时间执行的任务(也称为作业)。它提供了丰富的调度器功能,如支持复杂的循环调度、支持...
3. **线程安全**:如果你的任务逻辑不是线程安全的,可能会因为并发执行导致问题。 4. **Spring重启**:在某些情况下,如应用重启或Spring容器重建,可能导致任务重新注册和执行。 解决这个问题的方法包括: - ...
8. **错误处理**:Quartz 支持异常处理机制,当任务执行过程中出现错误,可以设定回调函数进行错误处理。 9. **可扩展性**:Quartz 允许你创建自定义的 Job 类和 Trigger 类,满足各种复杂需求。 10. **社区活跃**...
Quartz开发使用说明文档 Quartz是一个功能强大且广泛应用的开源作业调度框架,主要用于实现业务逻辑中的定时任务、批处理、事件触发等场景。Quartz的主要特点是高可用性、可扩展性、灵活配置、支持多种数据库和集群...
Quartz.NET是一个强大的开源作业调度框架,用于在.NET环境中创建和执行定时任务。它提供了高度灵活的调度功能,使得开发者可以轻松地定义和控制任务的执行时间。在"Quartz.net作业调度自定义定时执行任务多任务执行...
3. **集群支持**:Quartz可以部署在集群环境中,多个节点共享同一份调度信息,当一个节点失败时,其他节点可以接管调度任务,提供高可用性。 4. **插件友好**:Quartz允许开发人员通过插件扩展其功能,例如日志插件...
Quartz是一个开源的作业调度框架,它允许程序创建和管理任务,以便在特定时间自动执行。Spring通过其优秀的依赖注入(DI)和AOP(面向切面编程)特性,与Quartz相结合,简化了定时任务的配置和管理。下面我们将深入...
3. 创建作业类:定义一个实现`org.quartz.Job`接口的类,重写`execute(JobExecutionContext context)`方法,这个方法是实际执行的任务逻辑。 ```java public class DailyTask implements Job { @Override public ...
在Spring Boot应用中整合Quartz定时任务是一种常见的需求,它可以帮助我们执行周期性的后台任务,如数据同步、报表生成等。Spring Boot与Quartz的结合提供了便捷的配置方式,特别是通过YAML(YAML Ain't Markup ...