• Quartz


    Quartz 是什么?

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

    快速开始

    (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 表达式。区别如下:

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

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

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

    • 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 无异,如下:

    • 星号(*):代表所有可能的值,例如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命令
  • 相关阅读:
    c# 指针unsafe/fixed -- 【一】
    Windows消息大全(转)
    Windows消息过滤
    C#预编译
    c#摄像头编程实例 (转)
    多线程按顺序执行 (转)
    定位程序集
    无需写try/catch,也能正常处理异常 (转)
    无需Try catch 的UI事件封装类
    注册表修改安全策略
  • 原文地址:https://www.cnblogs.com/lshare/p/11334480.html
Copyright © 2020-2023  润新知