稍微往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 中大部分重要的类。
相关推荐
赠送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.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...
文件里面包括 1:Quartz开发指南.pdf 2:Quartz从入门到进阶.pdf 3:QuartzBeginnerExample一个附带的工程例子 4:quartz-1.6.1.zip Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它...
Spring自带了多线程设置:quartz,在quartz的设置中,时间字段CronExpression的设置比较纠结,一个Cron表达式是一个由六至七个字段组成由空格分隔的字符串,其中6个字段是必须的而一个是可选的,文档详细讲解了这个...
赠送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-1.6.1.jar; 赠送原API文档:quartz-1.6.1-javadoc.jar; 包含翻译后的API文档:quartz-1.6.1-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId:org.opensymphony.quartz,...
赠送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,...
通过4个案例认识quartz2D的图形处理 典型应用:生成圆形头像
tomcat启动时立即调用quartz执行一次
Quartz 是个开源的作业调度框架,为在Java 应用程序中进行作业调度提供了简单而强大的机制。Quartz 允许开发人员根据时间间隔来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。...
Quartz.net作业调度自定义定时执行任务多任务执行c#,定时执行任务,如超时取消订单,自动确认收货等等
spring注解Quartz定时执行功能
spring定时器代码。解决多次执行问题。包含quartz-all.jar包。 说明很详细。希望能帮上哪位朋友。
使用Spring Quartz执行定时任务
Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵 活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,...
我们要实现定时执行某个方法时,就可以在job目录中加入自己的方法类,但要实现GCJobInterface接口,重写execute 方法即可
Quartz--JAVA定时任务\Java应用:Java调度任务和Spring Quartz (1)
quartz-1.6.2最新包,Quartz 是什么,大概不需多加说明,简单讲就是一个纯 Java 实现的作业调度工具,相当于数据库中的 Job、Windows 的计划任务、Unix/Linux 下的 Cron,但 Quartz 可以把排程控制的更精细。
3. 第三课:更多关于Jobs和JobDetails的内容 4. 第四课:关于Triggers更多的内容 5. 第五课:SimpleTriggers 6. 第六课: CronTriggers 7. 第七课: TriggerListeners和JobListeners 8. 第八课: SchedulerListeners 9. 第...