首先,我们写一个最简单的定时任务大体上了解一下使用quartz的一些类或接口
1.引入maven依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
2.测试任务
创建2个任务,分别继承Job和实现QuartzJobBean
Job1:
public class SimpleJob1 implements Job { // 此处也可以继承QuartzJobBean
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("1 implements Job" + sdf.format(new Date()));
}
}
Job2:
public class SimpleJob2 extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("2 extends QuartzJobBean" + sdf.format(new Date()));
}
}
3.配置定时任务
方式一:Scheduler容器管理任务
public class TestSimpleJob1 {
public static void main(String args[]) {
try {
// 获取一个调度程序的实例
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// 定义一个job,并绑定SimpleJob1、2
// 这里不回马上创建一个SimpleJob实例,实例创建时在scheduler安排任务出发执行时创建的
// 设置job的名称及分组
JobDetail jobDetail1 = JobBuilder.newJob(SimpleJob1.class).withIdentity("SimpleJob1", "SimpleJob").build();
JobDetail jobDetail2 = JobBuilder.newJob(SimpleJob2.class).withIdentity("SimpleJob2", "SimpleJob").build();
// 声明触发器
Trigger trigger1 = TriggerBuilder.newTrigger().withIdentity("SimpleTrigger1", "SimpleJob").startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5).repeatForever()).build();
Trigger trigger2 = TriggerBuilder.newTrigger().withIdentity("SimpleTrigger2", "SimpleJob").startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5).repeatForever()).build();
scheduler.scheduleJob(jobDetail1, trigger1);
scheduler.scheduleJob(jobDetail2, trigger2);
scheduler.start();
Thread.sleep(30000);
scheduler.shutdown();
} catch (SchedulerException | InterruptedException e) {
e.printStackTrace();
}
}
}
方式二:将任务交给spring管理:
@Configuration
public class TestSimpleJob2 {
@Bean
public JobDetail testJob1() {
return JobBuilder.newJob(SimpleJob1.class).withIdentity("SimpleJob1").storeDurably().build();
}
@Bean
public JobDetail testJob2() {
return JobBuilder.newJob(SimpleJob2.class).withIdentity("SimpleJob2").storeDurably().build();
}
@Bean
public Trigger TextJobTrigger1() {
// 5秒执行一次,使用固定间隔方式
SimpleScheduleBuilder simpleScheduleBuilder
= SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5).repeatForever();
return TriggerBuilder.newTrigger().forJob(testJob1())
.withIdentity("SimpleJobTrigger1").withSchedule(simpleScheduleBuilder).build();
}
@Bean
public Trigger TextJobTrigger2() {
// 5秒执行一次,使用cron表达式
return TriggerBuilder.newTrigger().forJob(testJob2())
.withIdentity("SimpleJobTrigger2").withSchedule(CronScheduleBuilder.cronSchedule("*/5 * * * * ?")).build();
}
}
4.效果:
类目录:
效果一:
16:31:13.302 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG org.quartz.simpl.PropertySettingJobFactory - Producing instance of Job 'SimpleJob.SimpleJob1', class=com.yhx.toali.Quartz.QuartzFrame.SimpleDemo.SimpleJob1
16:31:13.308 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG org.quartz.core.QuartzSchedulerThread - batch acquisition of 1 triggers
16:31:13.309 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG org.quartz.simpl.PropertySettingJobFactory - Producing instance of Job 'SimpleJob.SimpleJob2', class=com.yhx.toali.Quartz.QuartzFrame.SimpleDemo.SimpleJob2
16:31:13.309 [DefaultQuartzScheduler_Worker-1] DEBUG org.quartz.core.JobRunShell - Calling execute on job SimpleJob.SimpleJob1
1 implements Job2019-12-09 16:31:13
16:31:13.313 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG org.quartz.core.QuartzSchedulerThread - batch acquisition of 1 triggers
16:31:13.313 [DefaultQuartzScheduler_Worker-2] DEBUG org.quartz.core.JobRunShell - Calling execute on job SimpleJob.SimpleJob2
2 extends QuartzJobBean2019-12-09 16:31:13
16:31:18.289 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG org.quartz.simpl.PropertySettingJobFactory - Producing instance of Job 'SimpleJob.SimpleJob1', class=com.yhx.toali.Quartz.QuartzFrame.SimpleDemo.SimpleJob1
16:31:18.290 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG org.quartz.core.QuartzSchedulerThread - batch acquisition of 1 triggers
16:31:18.290 [DefaultQuartzScheduler_Worker-3] DEBUG org.quartz.core.JobRunShell - Calling execute on job SimpleJob.SimpleJob1
1 implements Job2019-12-09 16:31:18
16:31:18.295 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG org.quartz.simpl.PropertySettingJobFactory - Producing instance of Job 'SimpleJob.SimpleJob2', class=com.yhx.toali.Quartz.QuartzFrame.SimpleDemo.SimpleJob2
16:31:18.296 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG org.quartz.core.QuartzSchedulerThread - batch acquisition of 1 triggers
16:31:18.296 [DefaultQuartzScheduler_Worker-4] DEBUG org.quartz.core.JobRunShell - Calling execute on job SimpleJob.SimpleJob2
2 extends QuartzJobBean2019-12-09 16:31:18
16:31:23.290 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG org.quartz.simpl.PropertySettingJobFactory - Producing instance of Job 'SimpleJob.SimpleJob1', class=com.yhx.toali.Quartz.QuartzFrame.SimpleDemo.SimpleJob1
16:31:23.291 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG org.quartz.core.QuartzSchedulerThread - batch acquisition of 1 triggers
16:31:23.291 [DefaultQuartzScheduler_Worker-5] DEBUG org.quartz.core.JobRunShell - Calling execute on job SimpleJob.SimpleJob1
1 implements Job2019-12-09 16:31:23
16:31:23.295 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG org.quartz.simpl.PropertySettingJobFactory - Producing instance of Job 'SimpleJob.SimpleJob2', class=com.yhx.toali.Quartz.QuartzFrame.SimpleDemo.SimpleJob2
16:31:23.296 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG org.quartz.core.QuartzSchedulerThread - batch acquisition of 1 triggers
16:31:23.296 [DefaultQuartzScheduler_Worker-6] DEBUG org.quartz.core.JobRunShell - Calling execute on job SimpleJob.SimpleJob2
2 extends QuartzJobBean2019-12-09 16:31:23
效果二:
1 implements Job2019-12-09 15:55:54
2 extends QuartzJobBean2019-12-09 15:55:55
1 implements Job2019-12-09 15:55:59
2 extends QuartzJobBean2019-12-09 15:56:00
1 implements Job2019-12-09 15:56:04
2 extends QuartzJobBean2019-12-09 15:56:05
1 implements Job2019-12-09 15:56:09
2 extends QuartzJobBean2019-12-09 15:56:10