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);
}
}

  

原文地址:https://www.cnblogs.com/huiandong/p/10230633.html