Quartz

Quartz 是什么?

Quartz 是一款 Java 平台上开源的任务调度器。html

快速开始

(1)引入依赖

compile "org.quartz-scheduler:quartz:2.3.0"
compile "org.quartz-scheduler:quartz-jobs:2.3.0"

(2)初始化

// 从工厂中获取 Scheduler 对象
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

// 启动
scheduler.start();

(3)新建一个 Job

public class TestJob implements Job{

  @Override
  public void execute(JobExecutionContext context) throws JobExecutionException {
    System.err.println("Hello World!  TestJob is executing.");
  }
}

(4)调度一个 Job

// 添加 Job 的携带数据
JobDetail job = newJob(TestJob.class).withIdentity("job1", "group1").build();
// 新建一个触发器
Trigger trigger = newTrigger().withIdentity("trigger1", "group1")
    .startNow()
    .withSchedule(simpleSchedule().withIntervalInSeconds(5)
                  .repeatForever())
    .build();
// 开始调度
scheduler.scheduleJob(job, trigger);

CronTrigger

Quartz 的 Cron 表达式不一样于 Linux 系统上使用的 Cron 表达式。区别以下:java

# Linux
minute   hour   day   month   week
# Quartz
second  minute   hour   day   month   week  year(optional field)

是的,Quartz 扩充了 second 和 year,这是要特别注意的。linux

关于 Quartz Cron 表达式每一个字段的取值,整理以下:git

  • second:[0, 59]。
  • minute: [0, 59]。
  • hour:[0, 23]。
  • day:一个月中的第几天,取值 [1, 31],注意不一样月份有不一样的上限值。
  • month:[0, 11],注意这跟 Linux 的有差别。还可取 [JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC]
  • week:星期几,取值 [1, 7],其中 1 表明星期日。还可取 [SUN, MON, TUE, WED, THU, FRI, SAT]

字段中使用的特殊字符跟 Linux 无异,以下:github

  • 星号(*):表明全部可能的值,例如month字段若是是星号,则表示在知足其它字段的制约条件后每个月都执行该命令操做。
  • 逗号(,):能够用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
  • 中杠(-):能够用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
  • 正斜线(/):能够用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线能够和星号一块儿使用,例如*/10,若是用在minute字段,表示每十分钟执行一次。

参考

  1. quartz-2.2.x/quick-start
  2. Lesson 6: CronTrigger - Quartz Tutorials
  3. 天天一个linux命令(50):crontab命令
相关文章
相关标签/搜索