1.概要
Quartz是由OpenSymphony提供的强大的开源任务调度框架。官网地址:http://www.quartz-scheduler.org/,纯Java实现。
- 强大的调度功能:很容易与Spring集成,提供调度运行环境的持久化机制,保存并恢复任务调度现场。即使系统因故障关闭,任务调度现场数据也不会丢失;
- 灵活的应用方式:允许灵活的定义触发器的调度时间表,并可以对触发器和任务进行关联映射,提供了组件式的监听器、各种插件、线程池等功能,支持任务和调度的多种组合方式、支持调度数据的多种存储方式,支持分布式和集群操作;
- 主要用到的设计模式:Builder模式、Factory模式、组件模式、链式写法;
- 核心概念:调度器——负责定期、定时、定频率的去执行任务;任务——具体的业务逻辑;触发器——调度器调度任务的时间;
- 重要组成:Job——接口且可以接收参数;JobDetail——Job的实现类和相关的静态信息;JobBuilder——定义或者创建JobDetail的实例;JobStore——用来保存Job数据;Trigger——描述触发Job执行时的时间触发规则;TriggerBuilder——定义或者创建触发器的实例;ThreadPool——线程池Job运行的基础设施;Scheduler——Quartz独立运行的容器;Calendar——一个Trigger可以和多个Calendar关联,以排除或者包含某些时间点;监听器——JobListener、TriggerListener、SchedulerLIstener监听对应的组件。
2.Quartz的基本使用
1.每两秒钟打印一次Hello World:
创建Job实现类HelloJob
package com.luna.timer.quarts;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class HelloJob implements Job{
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
//打印当前执行时间
Date startTime = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("任务执行时间为:"+sf.format(startTime));
System.out.println("Hello World");
}
}
创建Job测试类HelloScheduler
package com.luna.timer.quarts;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
public class HelloScheduler {
public static void main(Stri