一 、引入quartz
在maven pom文件中下载对应的quartz jar包依赖:
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.2</version>
</dependency>
二、小试牛刀
1、定义一个Job
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobKey;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
* 任务执行类 实现 Job接口
* 该接口只有一个方法
*/
public class FirstJob implements Job {
//开发者实现该接口定义需要执行的任务。JobExecutionContext类提供调度上下文的各种信息
public void execute(JobExecutionContext context) throws JobExecutionException {
//通过上下文获取
JobKey jobKey = context.getJobDetail().getKey();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String now = LocalDateTime.now().format(formatter);
System.out.println(jobKey + "在" + now + "时,输出了:hi, quartz!!!");
// jobKey就是前面指定的 group_1.testJob_1 组名和名字
//do more这里可以执行其他需要执行的任务
}
}
2、创建触发器(Trigger)和调度器(Scheduler)
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
public class FirstQuartz {
public void run() throws SchedulerException {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
/**
* 调用start()方法后, scheduler里有活跃的线程
* 这个应用在调用scheduler.shutdown()后才会停止
*/
scheduler.start(); // scheduler started
// define the job and tie it to our FirstJob class
JobDetail jobDetail = JobBuilder.newJob(FirstJob.class)
.withIdentity("FirstJob_1", "FirstGroup_1")
.build();
// Trigger the job to run now, and then repeat every 40 seconds
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("FirstTrigger_1", "FirstGroup_1")
.startNow()
.withSchedule
(
SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(40) // 40秒执行一次
.repeatForever()
)
.build(); //产生触发器
// Tell quartz to schedule the job using our trigger
scheduler.scheduleJob(jobDetail, trigger); // 一个trigger只能关联一个job, 一个job可以被多个trigger关联
}
public static void main(String[] args) throws SchedulerException {
FirstQuartz demo = new FirstQuartz();
demo.run();
}
}
执行main()方法后你就可以看到你定义的Job每40秒执行一次了。
Job跑起来后,可谓也是小兴奋了把,以后那些重复性的工作就交给电脑小哥了。
更多关于quartz的内容,请看后续分解。
http://www.quartz-scheduler.org/documentation/quartz-2.2.x/quick-start.html