文章目录
- 1. 创建maven项目
- 2. 添加Quartz 依赖
- 3. 编写Quartz配置文件
- 4. 编写Job实现类
- 5. 编写main函数,创建Scheduler
- 6. 创建JobDetail
- 7. 编写Trigger,添加JobDetail
- 8. 启动main函数,体验Quartz定时任务
Quartz 支持集群,但不支持分布式,简言之,一台服务器上执行不同定时任务。
1. 创建maven项目
2. 添加Quartz 依赖
<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz --><dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.3.2</version></dependency>
3. 编写Quartz配置文件
#配置任务调度器的实例名称
org.quartz.scheduler.instanceName=MyScheduler#定义:配置线程池中的线程数量
#作用: 决定当前项中有多少个定时任务同时执行
#配置 3 代表这个项目可以同时执行3个定时任务
org.quartz.threadPool.threadCount=3#job存储的类,有2种存储方式 第1种存到内存 第2种存储到数据库
#这里先采用内存的存储方式
org.quartz.jobStore.class=org.quartz.simpl.RAMJobStore
4. 编写Job实现类
package com.gblfy.job;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.time.LocalTime;public class MyJob implements Job {@Overridepublic void execute(JobExecutionContext context) throws JobExecutionException {LocalTime localTime = LocalTime.now();System.out.println("我正在执行" + localTime);}
}
5. 编写main函数,创建Scheduler
//创建SchedulerScheduler scheduler = StdSchedulerFactory.getDefaultScheduler();scheduler.start();
6. 创建JobDetail
//创建JobDetailJobDetail jobDetail = JobBuilder.newJob(MyJob.class)//唯一标识.withIdentity("jobDetail1", "group1").build();
7. 编写Trigger,添加JobDetail
//创建TriggerTrigger trigger = TriggerBuilder.newTrigger()//立即执行.startNow()//任务周期.withSchedule(SimpleScheduleBuilder.simpleSchedule()//间隔周期 单位s.withIntervalInSeconds(10)//一直执行.repeatForever()).build();//把jobDetail和trigger注册到scheduler中
scheduler.scheduleJob(jobDetail, trigger);
8. 启动main函数,体验Quartz定时任务
package com.gblfy;import com.gblfy.job.MyJob;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;public class QuartzStart {public static void main(String[] args) throws SchedulerException {//创建SchedulerScheduler scheduler = StdSchedulerFactory.getDefaultScheduler();scheduler.start();//创建JobDetailJobDetail jobDetail = JobBuilder.newJob(MyJob.class)//唯一标识.withIdentity("jobDetail1", "group1").build();//创建TriggerTrigger trigger = TriggerBuilder.newTrigger()//立即执行.startNow()//任务周期.withSchedule(SimpleScheduleBuilder.simpleSchedule()//间隔周期 单位s.withIntervalInSeconds(10)//一直执行.repeatForever()).build();//把jobDetail和trigger注册到scheduler中scheduler.scheduleJob(jobDetail, trigger);try {Thread.sleep(60000);} catch (InterruptedException e) {e.printStackTrace();}scheduler.shutdown();}
}
从第一次之后没10s执行一次