一、说在之前
刚才突然想起了Quartz,想快速使用起来。
找了半天HelloWorld的demo奈何都没有一个能称之为helloWord。介绍一堆没用的。。。
废话不多说。直接上代码。拿去就能用。
二、code
1)引入依赖
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
2)写一个类实现Job
public class HelloJob implements Job{
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
//这就是你一直定时执行的任务
System.out.println("hello");
}
}
3)配置一下就能用
public static void main(String[] args) throws Exception {
// 1、创建调度器Scheduler
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
// 2、创建JobDetail实例,并与PrintWordsJob类绑定(Job执行内容)
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
.withIdentity("trigger1","triggerGroup1").build();
// 3、构建Trigger实例,每隔1s执行一次
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "triggerGroup1")
.startNow()//立即生效
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(10)//每隔10s执行一次
.repeatForever()).build();
//4、执行
scheduler.scheduleJob(jobDetail, trigger);
scheduler.start();
}
到这就算helloword案例写完了。
三、一些介绍
我们需要明白 Quartz 的几个核心概念,这样理解起 Quartz 的原理就会变得简单了。
- Job 表示一个工作,要执行的具体内容。此接口中只有一个方法,如下:void execute(JobExecutionContext context) 就是干的活写在这里。
- JobDetail 表示一个具体的可执行的调度程序,Job 是这个可执行程调度程序所要执行的内容,另外 JobDetail 还包含了这个任务调度的方案和策略。 就是把干的活和这个类绑定在一起
- Trigger 代表一个调度参数的配置,什么时候去调。 就是告诉这个类我多久执行一次
- Scheduler 代表一个调度容器,一个调度容器中可以注册多个 JobDetail 和 Trigger。当 Trigger 与 JobDetail 组合,就可以被 Scheduler 容器调度了。 最后把我们设定好的两个对象传给他就能实现了。
可参考:https://www.w3cschool.cn/quartz_doc/
helloword够用了,想深入学习就去看看文档我们后序再追更quartz的篇章。
OK,以上。不足之处欢迎指正。