note:
maven添加quartz依赖
<!--quartz -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>${quartz.version}</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>${quartz.version}</version>
</dependency>
使用步骤:
- 实现job接口创建工作类
- 通过工厂类创建调度程序实例
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
- 使用JobBuilder通过工作类创建工作实例。可以设置jobKey和group,传递数据
// define the job and tie it to our DumbJob class
JobDetail job = newJob(DumbJob.class)
.withIdentity("myJob", "group1") // name "myJob", group "group1"
.usingJobData("jobSays", "Hello World!")
.usingJobData("myFloatValue", 3.141f)
.build();
- 使用TriggerBuilder为工作实例创建触发器,并设置触发条件。
note:
比较常用的的有SimpleTrigger和CronTrigger(cron表达式)
Trigger incrTrigger = newTrigger()
.withIdentity("incrTrigger", "crawlGroup")
.withSchedule(cronSchedule("0 35 7-22/5 * * ?")) // 每天8点到22点每隔5小时触发
.forJob("incrCrawlJob", "crawlGroup")
.build();
- 通调度程序注册job实例和触发器
scheduler.scheduleJob(incrlJobDetail, incrTrigger);
- 启动调度程序
scheduler.start();
备注:
- 一个触发器只能绑定一个JobDetail
- 调度程序可以注册多个JobDetail和触发器
- cron表达式可以在时间段范围的基础上设置间隔多长时间执行
example:
7-22/5(7点到22点,每隔5个小时执行一次) - JobDetail和触发器不绑定到调度程序上就不会执行
- 不要忘记启动调度程序