文章目录
1、Quartz
1.1 引入依赖
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.3.2</version>
</dependency>
1.2 入门案例
任务:将任务类型执行 10 次,每次间隔 3 秒。
- 任务类,需要实现 Job 接口
package com.sugar.quartz.utils;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import JAVA.text.SimpleDateFormat;
import java.util.Date;
/**
* 功能描述: 任务
*
* @author XiaoNianXin
* @date 2021/12/13 20:52
*/
public class HelloJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
// 获取当前时间,并格式化
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateSrting = format.format(date);
// 业务功能模拟
System.out.println("开始备份数据库,时间:" + dateSrting);
}
}
- 定时器类
package com.sugar.quartz.utils;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
/**
* 功能描述: 定时器配置
*
* @author XiaoNianXin
* @date 2021/12/13 21:08
*/
public class HelloSchedulerDemo {
public static void main(String[] args) throws SchedulerException {
// 1、调度器 - 从工厂获取调度实例
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// 2、任务实例 - 执行的任务对象
JobDetail job = JobBuilder.newJob(HelloJob.class)
.withIdentity("job1", "group1") // 任务名称,组名称
.build();
// 3、触发器 - 控制执行次数和执行时间
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1") // 同上
.startNow() // 立刻启动
.withSchedule(SimpleScheduleBuilder.simpleSchedule().
withIntervalInSeconds(3).
withRepeatCount(10)) // 循环10次,每次间隔3s
.build();
// 调度器关联触发器,并启动
scheduler.scheduleJob(job,trigger);
scheduler.start();
}
}
1.3 Job 与 JobDetail
Job