Trigger
Quartz中的触发器,用来告诉调度程序什么时候触发,即Trigger对象是用来触发Job的

触发器通用属性
JobKey
StartTime
EndTime
JobKey
表示job实例的表示.触发器被触发时,该指定的job实例会执行

StartTime 表示触发器额时间表首次被触发的时间
他的值的类型是Java.util.Date

EndTime
指定触发器的不再被触发的时间
他的值的类型是Java.util.Date

trigger通过builder模式创建

package cn.miye.web;

import java.text.SimpleDateFormat;
import java.util.Date; import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobKey;
import org.quartz.Trigger; public class HelloJob implements Job { @Override
public void execute(JobExecutionContext context) throws JobExecutionException {
// 打印当前时间
Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("当前时间:" + sf.format(date));
Trigger currentTrigger = context.getTrigger();
System.out.println("任务开始时间:"+sf.format(currentTrigger.getStartTime()));
System.out.println("任务结束时间:"+sf.format(currentTrigger.getEndTime()));
JobKey jobKey = currentTrigger.getJobKey();
System.out.println("JobKey的分组名称:"+jobKey.getGroup()+"JobKey的名称:"+jobKey.getName());
} }
package cn.miye.web;

import java.text.SimpleDateFormat;
import java.util.Date; import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory; public class HelloScheduler {
public static void main(String[] args) throws SchedulerException {
// 打印当前时间
Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("Current Exec Time Is:" + sf.format(date));
//获取距离当前时间3s之后的时间
date.setTime(date.getTime()+3000);//3s
//获取距离当前时间9s之后的时间
Date endDate = new Date();
endDate.setTime(endDate.getTime()+9000);
// 创建一个JobDetail实例,将该实例与HelloJobClass绑定
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
.withIdentity("myJob", "group1")
.build();
// 创建一个Trigger实例,定义该job立即执行,并每隔两秒钟执行一次,直到程序停止
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("mytrigger", "group1")
.startAt(date)//表示在date的时间开始执行
.endAt(endDate)//表示最后的执行时间
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(2).repeatForever()).build();
// 创建Scheduler实例
SchedulerFactory sfact = new StdSchedulerFactory();
Scheduler scheduler = sfact.getScheduler();
scheduler.start();
scheduler.scheduleJob(jobDetail, trigger);
}
}

子类

  

SimpleTrigger
  作用
  在一个指定时间段内执行一次作业任务
  或在指定的时间间隔内多次执行作业任务

package cn.miye.web;

import java.text.SimpleDateFormat;
import java.util.Date; import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; public class HelloJob implements Job { @Override
public void execute(JobExecutionContext context) throws JobExecutionException {
// 打印当前时间
Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("当前时间:" + sf.format(date));
System.out.println("Hello Word!");
} }
package cn.miye.web;

import java.text.SimpleDateFormat;
import java.util.Date; import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory; public class HelloScheduler {
public static void main(String[] args) throws SchedulerException {
// 打印当前时间
Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("Current Exec Time Is:" + sf.format(date));
//获取距离当前时间4s之后的时间
date.setTime(date.getTime()+4000L);//4s
// 创建一个JobDetail实例,将该实例与HelloJobClass绑定
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
.withIdentity("myJob", "group1")
.build();
// 创建一个SimpleTrigger实例,在距离当前时间4s中后执行且只执行一次
SimpleTrigger trigger = (SimpleTrigger) TriggerBuilder.newTrigger()
.withIdentity("mytrigger", "group1")
.startAt(date)
.build();
// 创建Scheduler实例
SchedulerFactory sfact = new StdSchedulerFactory();
Scheduler scheduler = sfact.getScheduler();
scheduler.start();
scheduler.scheduleJob(jobDetail, trigger);
}
}
//创建一个SimpleTrigger实例,在距离当前时间4s中后执行且每个两秒执行一次,执行3次
SimpleTrigger trigger = (SimpleTrigger)TriggerBuilder.newTrigger().withIdentity("mytrigger", "group1")
.startAt(date)
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(2).withRepeatCount(3)).build();
withRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY)
//执行无数次

CronTrigger

作用
基于日历的作业调度器
而不是像Simpletrigger 那样精确指定间隔时间,比SimpleTrigger更常用

(每月某天或者每周某天)
基于Cron表达式
Cron表达式
用于配置CronTrigger实例
是由7个子表达式组成的字符串,描述了时间表的详细信息
格式:[秒] [分] [时] [日] [月] [周] [年]

* 每

简单例子

package cn.miye.web;

import java.text.SimpleDateFormat;
import java.util.Date; import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; public class HelloJob implements Job { @Override
public void execute(JobExecutionContext context) throws JobExecutionException {
// 打印当前时间
Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("当前时间:" + sf.format(date));
System.out.println("Hello World");
} }
package cn.miye.web;

import java.text.SimpleDateFormat;
import java.util.Date; import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory; public class HelloScheduler {
public static void main(String[] args) throws SchedulerException {
// 打印当前时间
Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("Current Exec Time Is:" + sf.format(date));
// 创建一个JobDetail实例,将该实例与HelloJobClass绑定
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
.withIdentity("myJob", "group1")
.build();
// 每年每周每月每天每时每分秒钟执行一次
CronTrigger trigger = (CronTrigger)TriggerBuilder
.newTrigger()
.withIdentity("mytrigger", "group1")
.withSchedule(
CronScheduleBuilder.cronSchedule("* * * * * ? *"))
.build();
// 创建Scheduler实例
SchedulerFactory sfact = new StdSchedulerFactory();
Scheduler scheduler = sfact.getScheduler();
scheduler.start();
scheduler.scheduleJob(jobDetail, trigger);
}
}

在线Cron表达式生成工具http://www.pdtools.net/tools/becron.jsp

Quartz--Trigger的更多相关文章

  1. Quartz Trigger Priority 触发器优先级

    Quartz Trigger Priority 触发器优先级 当多个触发器在一个相同的时间内触发,并且调度引擎中的资源有限的情况下,那么具有较高优先级的触发器先触发. 需要将配置文件中的org.qua ...

  2. spring读书笔记----Quartz Trigger JobStore出错解决

    将Quartz的JOBDetail,Trigger保持到数据库的时候发现,系统报错 The job (DEFAULT.jobDetail) referenced by the trigger does ...

  3. Quartz源码——JobStore保存JonDetail和Trigger源码分析(一)

    我都是分析的jobStore 方式为jdbc的SimpleTrigger!RAM的方式类似分析方式! {0} :表的前缀 ,如表qrtz_trigger ,{0}== qrtz_ {1}:quartz ...

  4. Quartz(自动任务)中的触发器Trigger

    1.Quartz中的触发器TriggerJob 包含了要执行任务的逻辑,但是 Job 对何时该执行却一无所知.这个事情留给了 Trigger.Quartz Trigger 继承了抽象的 org.qua ...

  5. (转)Java任务调度框架Quartz入门教程指南(二) 使用job、trigger、schedule调用定时任务

    http://blog.csdn.net/zixiao217/article/details/53044890 读完第一节,我们已经对Quartz有了一个大体的认识,它可以定时帮我们执行一些处理程序, ...

  6. 企业级任务调度框架Quartz(9) Quartz之作业触发器Trigger

    前序:      我们已经大概对Quartz的基本有了一个大概的认识:现在我们将要逐渐对Quartz的各个重要组件进行学习:前面已经对job进行了详细讲解,现在我们来认识下它的一个重要兄弟,没有它,作 ...

  7. quartz任务调度基础: Job/Trigger/Schedule

    1.Quartz基本用法        参见官方说明:[Quartz Job Scheduler] 三大核心元素: Job:定义要执行的任务 triggers:任务触发策略 scheduler:关联j ...

  8. Spring Quartz实现任务调度

    任务调度 在企业级应用中,经常会制定一些"计划任务",即在某个时间点做某件事情 核心是以时间为关注点,即在一个特定的时间点,系统执行指定的一个操作 任务调度涉及多线程并发.线程池维 ...

  9. [Quartz笔记]玩转定时调度

    简介 Quartz是什么? Quartz是一个特性丰富的.开源的作业调度框架.它可以集成到任何Java应用. 使用它,你可以非常轻松的实现定时任务的调度执行. Quartz的应用场景 场景1:提醒和告 ...

  10. Quartz —— 从 HelloWorld 开始

    1.Quartz 是用来完成任务调度的. 2.Quartz 的三个核心概念:调度器.任务.触发器. (1)Job:通过实现该接口来定义需要执行的任务. public interface Job { / ...

随机推荐

  1. php安装的扩展php -m可以看到,但是phpinfo()看不到,php-fpm关闭了重新打开还是不行?

    问答 问答详情   php安装的扩展php -m可以看到,但是phpinfo()看不到,php-fpm关闭了重新打开还是不行? centos apache linux html php 3.2k 次浏 ...

  2. 【转】Hive安装及使用攻略

    Posted: Jul 16, 2013 Tags: HadoophiveHiveQLsql分区表 Comments: 18 Comments Hive安装及使用攻略 让Hadoop跑在云端系列文章, ...

  3. 递归查找无效的符号链接 分类: linux c/c++ 2014-06-02 00:14 345人阅读 评论(0) 收藏

    本程序实现在指定目录下递归查找无效的符号链接. 1.设计思路 逐个读取给定目录中的目录项,判断类型 (1)若为目录,则读取该目录中的目录项并判断类型: (2)若为链接文件,则读取出其指向文件的名称(绝 ...

  4. Java中的流(1)流简介

    简介 1.在java中stream代表一种数据流(源),java.io的底层数据元.(比作成水管)2.InputStream 比作进水管,水从里面流向你,你要接收,read3.OutputStream ...

  5. mac重启iterm后不会自动加载.bash_profile

    我用的zsh,由于平时设置的环境变量都是在.bash_profile文件中,每次重启iterm后,都需要重启手动加载.bash_profile文件,很麻烦. 设置自动加载.bash_profile的方 ...

  6. 【intellij idea】汇总

    1 右键无法创建,找不到scala class https://blog.csdn.net/u011513853/article/details/52896230 2 缩进 https://jingy ...

  7. (1)《Head First HTML与CSS》学习笔记---HTML基本概念

    前言: 1.     这本书并没有面面俱到,涵盖所有内容,只提供作为初学者真正需要的东西:基本知识和信心.所以这不是唯一的参考书.(我买了一本<HTML5权威指南>作为参考书和这本一起看, ...

  8. 501在全志r16平台tinav3.0系统下调通pwm1的10KHZ波形

    501在全志r16平台tinav3.0系统下调通pwm1的10KHZ波形 2018/10/19 19:52 版本:V1.0 开发板:SC3817R SDK:tina v3.0 1.01原始编译全志r1 ...

  9. No rule to make target ...

    在编译一个Android上的jni的时候出现了如下的问题 make[3]: *** No rule to make target `/home/zhang/android1/src/androidpk ...

  10. InChatter系统之服务端的Windows服务寄宿方式(三)

    为了部署的方便,我们开发Windows服务的服务寄宿程序,这样我们的服务便可以作为系统服务,随着系统的启动和关闭而启动和关闭,而避免了其他的设置,同时在服务的终止时(如系统关闭等)能及时处理服务的关闭 ...