Java定时任务调度工具详解(5)— Quartz 之 Trigger
2018-03-06 19:49
549 查看
五、浅谈Trigger
Trigger是什么Quartz中的触发器用来告诉调度程序作业什么时候触发 即Trigger对象是用来触发执行Job的
Quartz框架中的Trigger示意图
触发器通用属性
JobKey:表示job实例的标识,触发器被触发时,该指定的job实例会执行;
StartTime:表示触发器的时间表首次被触发的时间,它的值的类型是Java.util.Date;
EndTime:指定触发器的不再被触发的时间,它的值的类型是Java.util.Date。
代码演示
HelloJob类改造
package helloquartz.three; 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 { // 打印当前的执行时间,格式为2017-01-01 00:00:00 Date date = new Date(); SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 4000 System.out.println("--------Current Exec Time Is : " + sf.format(date)); Trigger currentTrigger = context.getTrigger(); System.out.println("--------Start Time Is : " + sf.format(currentTrigger.getStartTime())); System.out.println("--------End Time Is : " + sf.format(currentTrigger.getEndTime())); JobKey jobKey = currentTrigger.getJobKey(); System.out.println("--------JobKey info : " + " jobName : " + jobKey.getName() + " jobGroup : " + jobKey.getGroup()); } }
HelloScheduler类改造
package helloquartz.three; 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 { // 打印当前的执行时间,格式为2017-01-01 00:00:00 Date date = new Date(); SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("--------Current Time Is : " + sf.format(date)); // 创建一个 JobDetail 实例,将该实例与 HelloJob 实例绑定 JobDetail jobDeatil = JobBuilder.newJob(HelloJob.class) .withIdentity("myjob", "jobgroup1")// 定义标识符 .build(); // 获取距离当前时间3秒后的时间 date.setTime(date.getTime() + 3000); // 获取距离当前时间6秒后的时间 Date endDate = new Date(); endDate.setTime(endDate.getTime() + 6000); // 创建一个 Trigger 实例,定义该 job 立即执行,并且每隔两秒重复执行一次,直到永远 Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("myTrigger","trigroup1")// 定义标识符 .startAt(date)// 定义3秒后执行 .endAt(endDate)// 定义6秒后结束 .withSchedule(SimpleScheduleBuilder .simpleSchedule() .withIntervalInSeconds(2) .repeatForever())// 定义执行频度 .build(); // 创建 Scheduler 实例 SchedulerFactory sfact = new StdSchedulerFactory(); Scheduler scheduler = sfact.getScheduler(); // 绑定 JobDetail 和 trigger scheduler.scheduleJob(jobDeatil, trigger); // 执行任务 scheduler.start(); } }
运行结果:
--------Current Time Is : 2018-03-06 19:48:21 2018-03-06 19:48:21,574 [INFO ][main] Using default implementation for ThreadExecutor (org.quartz.impl.StdSchedulerFactory:StdSchedulerFactory.java:1172) 2018-03-06 19:48:21,578 [INFO ][main] Job execution threads will use class loader of thread: main (org.quartz.simpl.SimpleThreadPool:SimpleThreadPool.java:268) 2018-03-06 19:48:21,592 [INFO ][main] Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl (org.quartz.core.SchedulerSignalerImpl:SchedulerSignalerImpl.java:61) 2018-03-06 19:48:21,592 [INFO ][main] Quartz Scheduler v.2.2.3 created. (org.quartz.core.QuartzScheduler:QuartzScheduler.java:240) 2018-03-06 19:48:21,593 [INFO ][main] RAMJobStore initialized. (org.quartz.simpl.RAMJobStore:RAMJobStore.java:155) 2018-03-06 19:48:21,593 [INFO ][main] Scheduler meta-data: Quartz Scheduler (v2.2.3) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED' Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. NOT STARTED. Currently in standby mode. Number of jobs executed: 0 Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads. Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. (org.quartz.core.QuartzScheduler:QuartzScheduler.java:305) 2018-03-06 19:48:21,593 [INFO ][main] Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties' (org.quartz.impl.StdSchedulerFactory:StdSchedulerFactory.java:1327) 2018-03-06 19:48:21,593 [INFO ][main] Quartz scheduler version: 2.2.3 (org.quartz.impl.StdSchedulerFactory:StdSchedulerFactory.java:1331) 2018-03-06 19:48:21,594 [INFO ][main] Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started. (org.quartz.core.QuartzScheduler:QuartzScheduler.java:575) --------Current Exec Time Is : 2018-03-06 19:48:24 --------Start Time Is : 2018-03-06 19:48:24 --------End Time Is : 2018-03-06 19:48:27 --------JobKey info : jobName : myjob jobGroup : jobgroup1 --------Current Exec Time Is : 2018-03-06 19:48:26 --------Start Time Is : 2018-03-06 19:48:24 --------End Time Is : 2018-03-06 19:48:27 --------JobKey info : jobName : myjob jobGroup : jobgroup1
相关文章推荐
- Java定时任务调度工具详解之Quartz篇(中级)一:浅谈JobExecutionContext&JobDatai&浅谈Trigger
- Java定时任务调度工具详解(4)— Quartz 之 Job/JobDetail/JobExecutionContext/JobDataMap
- Java定时任务调度工具详解(7)— Quartz 之 Scheduler
- Java定时任务调度工具详解(8)— Quartz 之 quartz.properties文件
- Java定时任务调度工具详解之Quartz篇(中级)二:SimpleTrigger& CronTrigger&浅谈Scheduler&QuartzProperties文件
- Java定时任务调度工具详解之Quartz
- Java定时任务调度工具详解(3)— Quartz 简介
- Java定时任务调度工具详解(6)— Quartz 之 SimpleTrigger、CronTrigger、Cron表达式
- Java定时任务调度工具详解之Quartz篇
- Java定时任务调度工具详解(2)— Timer 函数的综合应用
- Quartz---Java定时任务调度工具
- Java定时任务调度工具详解之Timer篇
- Java定时任务调度工具详解之Timer篇
- java定时任务调度工具-quartz
- Java定时任务调度工具详解之Timer篇(初级)
- Java任务调度框架Quartz入门教程指南(二) 使用job、trigger、schedule调用定时任务
- Java定时任务调度工具详解(1)— Timer 简介
- java定时任务调度工具Timer和Quartz
- Java定时任务调度工具详解之Timer
- Java 定时任务调度工具 Quartz(Part 1)