首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

第三节:Quartz 实施过程

2013-04-09 
第三节:Quartz 执行过程稍微往quartz里面看了下代码在加上自己的揣测,大概梳理下它的执行过程,是如何调度,

第三节: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

?

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

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

?

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

热点排行