Quartz 调度器
2019-05-07 本文已影响0人
潜心之力
一、简介
Quartz是一个开源作业调度框架,框架的核心是调度器,调度器负责管理Quartz应用运行时环境,调度器不是靠自己做所有的工作,而是依赖框架内一些非常重要的部件,Quartz不仅仅是线程和线程管理,为确保可伸缩性,Quartz采用了基于多线程的架构,启动时,框架初始化一套worker线程,这套线程被调度器用来执行预定的作业,这就是Quartz怎样能并发运行多个作业的原理,Quartz依赖一套松耦合的线程池管理部件来管理线程环境。
MAVEN仓库:https://mvnrepository.com
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
二、使用示例
JobDetail detail = JobBuilder
.newJob(OceanJob.class)
.withIdentity("key")
.build(); -> 任务
SimpleScheduleBuilder builder = SimpleScheduleBuilder
.simpleSchedule()
.withIntervalInSeconds(2)
.repeatForever(); -> 定时器
SimpleTrigger trigger = TriggerBuilder
.newTrigger()
.withIdentity("trigger")
.startNow()
.withSchedule(builder)
.build(); -> 触发器
StdSchedulerFactory factory = new StdSchedulerFactory(); -> 调度工厂
Scheduler scheduler = factory.getScheduler(); -> 调度器
scheduler.scheduleJob(detail,trigger); -> 组装组件
scheduler.start(); -> 启动调度器
JobKey jobKey = new JobKey("key");
scheduler.deleteJob(jobKey); -> 通过身份标识移除指定任务
三、CronTrigger
IDEA:鼠标左键选中接口类名,ctrl+alt+B,查看接口实现类
格式: [秒] [分] [时] [日] [月] [周] [年]
说明 | 必填 | 允许值 | 通配符 |
---|---|---|---|
秒 | 是 | 0~59 | , - * / |
分 | 是 | 0~59 | , - * / |
时 | 是 | 0~23 | , - * / |
日 | 是 | 1~31 | , - * ? / L W |
月 | 是 | 1~12 或 JAN~DEC | , - * / |
周 | 是 | 1~7 或 SUN~SAT | , - * ? / L # |
年 | 否 | 1970~? 或 empty | , - * / |
通配符 | 说明 |
---|---|
* | 所有值 |
? | 不指定值 |
- | 区间,表示范围 |
, | 允许多个值 |
L | LAST,表示最后 |
W | 离目标日期最近的工作日 |
CronScheduleBuilder builder = CronScheduleBuilder.cronSchedule("* * * * * ?");
CronTrigger trigger = TriggerBuilder.newTrigger()
.withIdentity("cron")
.withSchedule(cronScheduleBuilder)
.build();