`
yimeng528
  • 浏览: 191745 次
  • 性别: 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 中大部分重要的类。

分享到:
评论

相关推荐

    Quartz开发指南

    - **监听器**:应用可以通过实现监听器接口来监控任务执行的过程,实现对任务行为的控制或调整。 - **插件机制**:Quartz支持通过插件扩展其功能,如记录日志、从文件中加载任务定义等。 #### 九、常见问题 - **...

    Java定时器[定义].pdf

    Java定时器是Java标准库中的一个实用工具,用于在特定时间执行预定任务。它主要由`java.util....在实际开发中,可以根据项目需求选择是否使用此类框架或寻找更强大的第三方库,如Quartz或Spring框架的定时任务支持。

    Spring1笔记

    5. **易于集成第三方框架**:Spring 提供了对多种流行框架(如 Struts、Hibernate、Quartz 等)的直接支持,降低了使用这些框架的难度。 6. **简化 Java EE API 使用**:Spring 对一些 Java EE 标准 API 进行了...

    火车票抢票程序

    Java中,我们可以利用ScheduledExecutorService或者Quartz等第三方库来定时执行任务。 4. **数据解析**:票务系统返回的通常是JSON或XML格式的数据,我们需要解析这些数据,提取出关键信息如车次、余票数量等。Java...

    新浪微博 爱情表白 代码

    微博登录通常涉及到OAuth协议,这是一个授权框架,允许第三方应用在用户许可的情况下访问其在微博上的部分数据。开发者需要注册应用,获取API密钥和密钥,然后通过HTTP请求与微博服务器交互,完成用户的身份验证。...

Global site tag (gtag.js) - Google Analytics