Quartz 任务调度框架
1.quartz的使用
quartz的介绍
Quartz就是启动定时任务的框架
官网: http://www.quartz-scheduler.org/
下载框架文件结构如下
2.Quartz的快速入门
2.1 首先建立一个maven项目
2.2 导入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.3 入门案例:
http://www.quartz-scheduler.org/documentation/quartz-2.1.x/quick-start.html
案例一
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;
public class QuartzTest {
public static void main(String[] args) throws SchedulerException {
// 定时器对象
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// 开启定时任务
scheduler.start();
// 关闭定时任务
scheduler.shutdown();
}
}
案例二:SimpleTrigger使用
必须掌握JobDetail和Trigger两个对象
Job工作任务,你要做什么
Trigger 执行工作任务 触发条件,什么时间执行,多久执行一次
编写工作任务
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class HelloJob implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("Hello,Quartz!!------");
}
}
编写定时任务代码
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
public class HelloJobFactory {
public static void main(String[] args) throws SchedulerException {
// 定时器对象
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// 定义一个工作对象
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
.withIdentity("job1", "group1").build();
// 定义触发器
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1").startNow() .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(5))
.build();
scheduler.scheduleJob(jobDetail, trigger);
// 开启定时任务
scheduler.start();
}
}
对象 TriggerBuilder 启动任务时间
startNow 立即启动
startAt (Date) 指定时间启动
对象 SimpleScheduleBuilder 进行简单任务重复执行
repeatSecondly …() 多少秒后重复执行
repeatminutely …() 多少分钟后重复执行
repeatHourly …() 多少小时后重复执行
案例三:CronTrigger的使用
// 定义触发器
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1").startNow()
.withSchedule(CronScheduleBuilder.cronSchedule("30/3 7 19 ? * *"))
.build();
上面是每月的每周每一天19点7分30秒,每隔3秒执行一次
day-of-month (第四个)和 day-of-week(最后一个) 只能设置一个值,另一个值写 ?