Quartz运行基本:

(1)       创建任务jobDetail(放入具体的jobImpl),触发器trigger(保存job的触发策略),均放入调度器scheduler。

(2)       执行scheduler.start()。

(3)       对于quartz.properties,要求较高的场景需要自定义配置,比如设置足够多的线程数。否则使用默认配置即可满足。

Schedule调度的线程,主要有2个:

(1)       常规调度线程:轮询存储的所有trigger,如有需要触发的trigger,即到了下一次触发的时间,则从任务执行线程池获取一个空闲线程,执行与该trigger关联的任务。

(2)       Misfire线程:扫描所有的trigger,查看是否有misfiredtrigger,如有,则根据misfire的策略分配处理(fire now OR wait for the next fire)。

Quartz的集群调度:

(1)       集群上的每一个节点,通过相同的数据库表来协调调度。DB中存有trigger表,并且每一个节点要查询trigger表时必须拿到锁。

(2)       当一个机子拿到trigger表锁,查询trigger表,如有要触发的trigger,则执行相应任务X,并修改此trigger的NEXT_FIRE_TIME字段,即下次执行时间。这样,当别的机子拿到锁,也查询trigger表,就不会再执行上一次trigger,因为trigger的NEXT_FIRE_TIME字段已经被修改,这样就实现了多个节点的应用在某一时刻对任务只进行一次调度。

最新文章

  1. Mac下安装Matlab R2015b
  2. nodeType、nodeName和nodeValue
  3. WebRTC录音(2)-录音文件转换成WAV格式
  4. HTTP协议header标头详解
  5. (转)浅谈.NET下的多线程和并行计算(一)前言
  6. 将java类的泛型集合转换成json对象
  7. node包管理器
  8. HDU 2859 Phalanx
  9. 实现径向变换用于样本增强《Training Neural Networks with Very Little Data-A Draft》
  10. hdu4149 Magic Potion
  11. 【步步为营 Entity Framework+Reporting service开发】-(2) Code Fir
  12. Java 非递归实现 二叉树的前中后遍历以及层级遍历
  13. Matplotlib学习---用matplotlib画散点图,气泡图(scatter plot, bubble chart)
  14. Status bar and navigation bar appear over my view's bounds in iOS 7
  15. vm #set、日期截取、#foreach&#if
  16. JavaScript--Array; Array.prototype
  17. Sourcetree报错: 您没有已经配置扩展集成设置的远端
  18. JAVA面试题集---数据库方面_
  19. deploy: [mkdir] Created dir: C:\Program Files\Java\apache-cxf-2.4.2\samples\java_first_pojo\build [loadfile] Do not set property srcbuild.classpath as its length is 0.
  20. HDU 2036 改革春风吹满地 (计算几何)

热门文章

  1. Jedis的配置和优化
  2. Visual Studio 2015&2017 key
  3. 委托和lambda表达式,Action和Func
  4. 基于HttpClient4.5.1实现Http访问工具类
  5. centos6.8启动防火墙的艰辛过程
  6. three.js基础前置知识
  7. 深入浅出TypeScript(2)- 用TypeScript创建web项目
  8. [Python] 用python做一个游戏辅助脚本,完整思路
  9. MySQL之PXC集群搭建
  10. python控制窗口对角线运动