文章目录
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:基于反射的任务调度接口,所有任务类都要实现该接口