zoukankan      html  css  js  c++  java
  • CronTrigger

    CronTrigger: 比SimpleTrigger更强大

    基于日历的作业调度器,比simpleTriger更常用。不像SimpleTrigger那样需要指定执行间隔。

    由7个表达式组成的字符串:  [秒]  [分钟]  [小时]  [天]  [月]  [周]  [年]

    package com.huiandong;

    import org.quartz.*;
    import org.quartz.impl.StdSchedulerFactory;

    import java.text.SimpleDateFormat;
    import java.util.Date;

    public class QTest {
    public static void main(String[] args) throws SchedulerException {
    Date date = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String format = sdf.format(date);

    //创建一个JobDetail示例,将该实例与HelloJobClass绑定
    JobDetail jobD = JobBuilder.newJob(QuartzJob.class)
    .withIdentity("quartz1")
    .build();




    //创建一个Trigger实例,定义该job立即执行,每隔2s重复执行
    //距离当前时间4s后执行且执行一次
    CronTrigger cronTrigger = (CronTrigger) TriggerBuilder.newTrigger()
    .withIdentity("Trigger", "group1")

    //秒 必 0-59 ,-*/ ,或 -至 *每 /每
    //分 必 0-59 ,-*/
    //小时 必 0-23 ,-*/
    //日 必 1-31 ,-*?/LWC
    //月 必 1-12或JAN-DEC ,-*/
    //周 必 1-7或SUN-SAT ,-*?/LC#
    //年 否 empty,1970-2099 ,-*/
    // 10-12 包括10,11,12
    // 5/15 表示从第5秒开始,每隔15秒触发一次
    // L 在天上表示每月最后一天,在周上表示星期六,相当于7或SAT
    // W 表示离指定日最近的工作日(周一到周五)如:15W表示离每月15号最近的那个工作日,如果15号是周六,则找14号周五
    // 如果15号是周末,则找下周一
    // # 表示每月第几个周几 6#3表示每月第6个周三 #5的话第五周没有周六,不会触发
    //LW可以一起使用
    // 周字段英文不区分大小写即MON和mon一样
    // 使用在线工具生成cron表达式cron表达式在先生成器

    //每天10点15分触发 *和?的意思基本一样
    // .withSchedule(CronScheduleBuilder.cronSchedule("0 15 10 ?* ?* ?* ?*年缺省也可以"))//?表示不关心,写成*也可以
    // 每天下午2点到2点59分(整点开始,每隔5分钟触发)
    // .withSchedule(CronScheduleBuilder.cronSchedule("0 0/5 14 * * *"))//0表示不算 0/5表示每隔5分钟从0分开始 ?表示不关心,写成*也可以
    // 从周一到周五每天上午的10点15分触发
    // .withSchedule(CronScheduleBuilder.cronSchedule("0 15 10 * * MON-FRI"))//0表示不算 0/5表示每隔5分钟从0分开始 ?表示不关心,写成*也可以
    // 每月第三周的星期五开始触发 6代表星期5 #是第的意思
    // .withSchedule(CronScheduleBuilder.cronSchedule("0 15 10 ? * 6#3"))//0表示不算 0/5表示每隔5分钟从0分开始 ?表示不关心,写成*也可以
    // 从2016年到2017年每月最后一周的星期五的10点15分种触发 L表示Last
    // .withSchedule(CronScheduleBuilder.cronSchedule("0 15 10 ? * * 2017"))//0表示不算 0/5表示每隔5分钟从0分开始 ?表示不关心,写成*也可以
    // 每天的14点整至14点59分55秒,以及18点整至18点59分55秒,每5秒触发一次
    .withSchedule(CronScheduleBuilder.cronSchedule("0/5 * 14,18 ? * *"))//0表示不算 0/5表示每隔5分钟从0分开始 ?表示不关心,写成*也可以
    .build();



    //创建scheduler实例
    SchedulerFactory sf=new StdSchedulerFactory();

    Scheduler sche = sf.getScheduler();
    sche.start();
    System.out.println(format);
    sche.scheduleJob(jobD,cronTrigger);
    }
    }

      

  • 相关阅读:
    在OpenEuler中安装轻量化调试工具CGDB
    nginx服务器 server location映射路径配置
    hadoop HDFS文件系统角色及文件读写流程
    Linux系统Tomcat服务自启动脚本
    Linux系统软件安装的三种方式
    linux基础命令
    Java多线程解析
    多线程的典型应用场景---多个生产者多个消费者对共享资源的处理
    10.16变量的作用域和生存周期
    10.15sizeof用法
  • 原文地址:https://www.cnblogs.com/huiandong/p/10230633.html
Copyright © 2011-2022 走看看