quartz
李民11
这个作者很懒,什么都没留下…
展开
-
quartz原理分析1----介绍
quartz是一个分布式任务调度框架。最初是由OpenSymphony(大概2010年网站已关闭)开发,现已被Terracotta于2009年收购,目前一直在持续更新中。(最新的版本是2.3.x,于2017年4月份发布,最新的master分支最后提交时间是2017年10月)quartz使用非常简单,使用调度器(schedule)调度特定的job和trigger即可。quartz有内存模式和...原创 2018-07-16 11:50:24 · 274 阅读 · 0 评论 -
quartz原理分析2----job和trigger的存储
对于数据库模式的调度任务,job和trigger需要被存储到数据库中。当服务器再次启动的时候调度任务可以继续执行。 下面分析任务的存储代码。 public static void main(String[] args) throws SchedulerException { SchedulerFactory sf = new StdSchedulerF...原创 2018-07-16 16:44:56 · 1110 阅读 · 0 评论 -
quartz原理分析3----调度任务启动过程
调度任务的启动是通过Scheduler的start()方法实现的。public void start() throws SchedulerException { sched.start();}sched是QuartzScheduler对象。public void start() throws SchedulerException { if (shutti...原创 2018-07-16 17:20:01 · 771 阅读 · 0 评论 -
quartz原理分析4----任务执行
任务执行是通过QuartzSchedulerThread类来实现的,此类继承了Thread,可以作为一个线程单独运行。QuartzScheduler有个此类的属性,在QuartzScheduler初始化的时候会创建线程并执行。QuartzSchedulerThread有个状态属性,在初始执行的时候状态pause=true,只有在初始化完成之后(QuartzScheduler.start())才...原创 2018-07-16 22:25:02 · 725 阅读 · 0 评论 -
quartz原理分析5----关于加锁
如果在集群环境,就需要面临多个服务器同时访问任务的问题,如果不对并发访问进行控制,可能造成数据的不一致。quartz使用数据库加锁的方式来控制并发访问。使用数据库锁必须在集群环境下,设置集群环境需要在quartz.properties中进行如下设置:org.quartz.jobStore.isClustered = true在quartz中需要加锁的场景有很多,比如获取触发器时,更新...原创 2018-07-16 23:12:13 · 5245 阅读 · 1 评论 -
spring源代码阅读2----xml解析
大部分自定义配置都是放在xml中的,spring容器需要解析xml对BeanFactory进行初始化。下面说一下解析过程,以ClassPathXmlApplicationContext类说明。ClassPathXmlApplicationContext文件初始化方法如下:public ClassPathXmlApplicationContext( String[] configLo...原创 2018-07-17 21:32:21 · 226 阅读 · 0 评论