Quartz 是一个最强大的任务调度框架,基于Java开发,涉及的主要有三个东西
任务 (要执行的业务逻辑 ) 触发器 (执行的时间) 调度器(控制执行的控制器)
下面我写了一个最简单的例子,如下
package com.quartz.test.hello;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
/**
* 任务类,每两秒执行一次hello world
* @author 星驰太帅了
*
*/
public class HelloJob implements Job{
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println(new Date() + " : " + "hello world");
}
}
package com.quartz.test.hello;
import java.util.Date;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
/**
* 任务调度测试类
* @author 星驰太帅了
*
*/
public class HelloSchedluer {
public static void main(String[] args) throws Exception{
//绑定job到jobdetail 上
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
.withIdentity("myJob", "group1") //唯一标记符
.build();
jobDetail.getJobDataMap().put("name", "zxc");
//创建一个最简单的触发器
Date date = new Date();
date.setTime(date.getTime() + 3000);
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("myTrigger", "group1") //唯一标记符
.startAt(date) //3秒后执行此任务
.withSchedule(SimpleScheduleBuilder.simpleSchedule() //创建一个简单的调度器
.withIntervalInSeconds(2000) // 每2秒执行一次
.repeatForever()) // 永远重复执行
.build();
//创建调度器
Scheduler scheduler = new StdSchedulerFactory().getScheduler(); // 通过 StdSchedulerFactory 获取一个简单的调度器
//绑定调度器要执行的任务和任务的执行逻辑
scheduler.scheduleJob(jobDetail, trigger);
//开始执行
scheduler.start();
}
}
执行效果为: