一 Quartz介绍
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。Quartz的最新版本为Quartz 2.2.1。
二 Quartz的使用思路
1)job-任务-你要做的什么事?
2)Trigger-触发器-你什么时候去做?
3)Scheduled-任务调度-你什么时候需要去做什么事?
二 Quartz基本使用
2.1 创建项目
2.2 修改pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.bjsxt</groupId>
<artifactId>26-quartz-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!-- 添加quartz 坐标 -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.1</version>
</dependency>
</dependencies>
</project>
2.3 创建job类
package com.bjsxt.quartz;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
/**
* 定义任务类
* @author guozi
*
*/
public class QuartzDemo implements Job{
/**
* 任务被触发时所执行的方法
*/
public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println("Execute......" + new Date());
}
}
2.4 编写测试代码
package com.bjsxt.quartz;
import org.quartz.CronScheduleBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
public class QuartzMain {
public static void main(String[] args) throws Exception {
// 1.创建Job对象,你要做什么事?
JobDetail job = JobBuilder.newJob(QuartzDemo.class).build();
/**
* 简单的Trigger触发时间:通过Quartz提供的一个方法完成简单的重复调用 cron表达式,即cron
* Trigger:按照cron表达式来给定触发时间
*
*/
// 2.创建Trigger对象,在什么时间做?
// Trigger trigger = TriggerBuilder.newTrigger().withSchedule(SimpleScheduleBuilder.repeatSecondlyForever())
// .build();
Trigger trigger = TriggerBuilder.newTrigger().withSchedule(CronScheduleBuilder.cronSchedule("0/2 * * * * ?")).build();
// 3.创建Schedule对象,在什么时间做什么事?
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.scheduleJob(job, trigger);
// 启动
scheduler.start();
}
}