前篇介绍了简单的TimerTask 定时任务。这次介绍另外一种方式quartz。
quartz 是目前使用最多的一种方式,既可以单独使用,也可以结合Spring的配置进行使用。这次先讲述quartz最基本的使用方式。
1. 创建一个maven项目。在对应的pom配置文件中引入quartz 的相关包:
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
2. 创建一个java 类,用于输出信息,继承自org.quartz.Job,并重写execute 方法。
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class RAMJob implements Job{
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println("Say hello to Quartz" + new Date());
}
}
3. 创建一个测试类,main方法代码如下:
//1.创建Scheduler的工厂
SchedulerFactory sf = new StdSchedulerFactory();
//2.从工厂中获取调度器实例
Scheduler scheduler = sf.getScheduler();
//3.创建JobDetail
JobDetail jb = JobBuilder.newJob(RAMJob.class)
.withDescription("this is a ram job") //job的描述
.withIdentity("ramJob", "ramGroup") //job 的name和group
.build();
//任务运行的时间,SimpleSchedle类型触发器有效
long time= System.currentTimeMillis() + 3*1000L; //3秒后启动任务
Date statTime = new Date(time);
//4.创建Trigger
//使用SimpleScheduleBuilder或者CronScheduleBuilder
Trigger t = TriggerBuilder.newTrigger()
.withDescription("")
.withIdentity("ramTrigger", "ramTriggerGroup")
//.withSchedule(SimpleScheduleBuilder.simpleSchedule())
.startAt(statTime) //默认当前时间启动
.withSchedule(CronScheduleBuilder.cronSchedule("0/2 * * * * ?")) //两秒执行一次
.build();
//5.注册任务和定时器
scheduler.scheduleJob(jb, t);
//6.启动 调度器
scheduler.start();
System.out.println("启动时间 : " + new Date());
4. 运行main方法,即可看到最简单的quartz运行完成。
这个是最简单的一种方式,大家也可以参加官网给出的案例进行完善。
quartz还有另外一种jdbc的方式,这里就不多说,大家可以自行参考官网给出的案例。
本文档参考了以下资料完成:
http://www.quartz-scheduler.org/
http://blog.csdn.net/u010648555/article/details/54863394