Job代码:

[java] view plaincopy

  1. package cn.zto.job; 
  2. import java.text.SimpleDateFormat; 
  3. import java.util.Date; 
  4. import org.quartz.Job; 
  5. import org.quartz.JobDetail; 
  6. import org.quartz.JobExecutionContext; 
  7. import org.quartz.JobExecutionException; 
  8. import org.quartz.JobKey; 
  9. import org.slf4j.Logger; 
  10. import org.slf4j.LoggerFactory; 
  11. public class SimpleJob 
  12. implements Job 
  13. public void execute(JobExecutionContext context) 
  14. throws JobExecutionException 
  15.   { 
  16. //通过上下文获取
  17.     JobKey jobKey = context.getJobDetail().getKey(); 
  18.     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");   
  19.     System.out.println("SimpleJob类 :"+ jobKey + " 在 " + dateFormat.format(new Date())+" 时运行"); 
  20.   } 

SimpleTriggerExample.java

[java] view plaincopy

  1. package cn.zto.app; 
  2. import java.text.SimpleDateFormat; 
  3. import java.util.Date; 
  4. import org.quartz.DateBuilder; 
  5. import org.quartz.JobBuilder; 
  6. import org.quartz.JobDetail; 
  7. import org.quartz.JobKey; 
  8. import org.quartz.Scheduler; 
  9. import org.quartz.SchedulerFactory; 
  10. import org.quartz.SchedulerMetaData; 
  11. import org.quartz.SimpleScheduleBuilder; 
  12. import org.quartz.SimpleTrigger; 
  13. import org.quartz.TriggerBuilder; 
  14. import org.quartz.TriggerKey; 
  15. import org.quartz.impl.StdSchedulerFactory; 
  16. import cn.zto.job.SimpleJob; 
  17. public class SimpleTriggerExample 
  18. public void run() 
  19. throws Exception 
  20.   { 
  21.     System.out.println("------- 初始化 -------------------"); 
  22.     SchedulerFactory sf = new StdSchedulerFactory(); 
  23.     Scheduler sched = sf.getScheduler(); 
  24.     System.out.println("------- 初始化完成 --------"); 
  25.     System.out.println("------- 向Scheduler加入Job ----------------"); 
  26.     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");   
  27. //设置任务触发的时间,时间为下方15的倍数  会在任意时间段的  15S 30S 45S 60S 开始会触发一次
  28.     Date startTime = DateBuilder.nextGivenSecondDate(null, 15); 
  29.     JobDetail job = JobBuilder.newJob(SimpleJob.class).withIdentity("job1", "group1").build(); 
  30.     SimpleTrigger trigger = (SimpleTrigger)TriggerBuilder.newTrigger() 
  31.             .withIdentity("trigger1", "group1") 
  32.             .startAt(startTime) 
  33.             .build(); 
  34.     Date ft = sched.scheduleJob(job, trigger); 
  35.     System.out.println(job.getKey() + " 将会在: " + dateFormat.format(ft) + "时运行,"
  36.             + "重复: " + trigger.getRepeatCount() + " 次, " //获取重复的次数
  37.             + "每 " + trigger.getRepeatInterval() / 1000L + " s 重复一次"); 
  38.     job = JobBuilder.newJob(SimpleJob.class).withIdentity("job2", "group1").build(); 
  39.     trigger = (SimpleTrigger)TriggerBuilder.newTrigger() 
  40.             .withIdentity("trigger2", "group1") 
  41.             .startAt(startTime) 
  42. //设置一个用于触发的时间
  43.             .withSchedule(SimpleScheduleBuilder//SimpleScheduleBuilder是简单调用触发器,它只能指定触发的间隔时间和执行次数;
  44.                         .simpleSchedule()//创建一个SimpleScheduleBuilder
  45.                         .withIntervalInSeconds(10)//指定一个重复间隔,以毫秒为单位。
  46.                         .withRepeatCount(10))//指定反复的次数
  47.             .build(); 
  48.     ft = sched.scheduleJob(job, trigger); 
  49.     System.out.println(job.getKey() + " 将会在: " + dateFormat.format(ft) + "时运行,"
  50.             + "重复: " + trigger.getRepeatCount() + " 次, "
  51.             + "每 " + trigger.getRepeatInterval() / 1000L + " s 重复一次"); 
  52.     trigger = (SimpleTrigger)TriggerBuilder.newTrigger() 
  53. //将触发器放入  group2 里面
  54.             .withIdentity("trigger2", "group2") 
  55.             .startAt(startTime) 
  56.             .withSchedule(SimpleScheduleBuilder 
  57.                         .simpleSchedule() 
  58.                         .withIntervalInSeconds(10) 
  59.                         .withRepeatCount(2)) 
  60.             .forJob(job) 
  61.             .build(); 
  62.     ft = sched.scheduleJob(trigger); 
  63.     System.out.println(job.getKey() + " 也会在: " + dateFormat.format(ft) + "时运行,"
  64.             + "重复: " + trigger.getRepeatCount() + " 次, "
  65.             + "每 " + trigger.getRepeatInterval() / 1000L + " s 重复一次"); 
  66.     job = JobBuilder.newJob(SimpleJob.class).withIdentity("job3", "group1").build(); 
  67.     trigger = (SimpleTrigger)TriggerBuilder.newTrigger() 
  68.             .withIdentity("trigger3", "group1") 
  69.             .startAt(startTime) 
  70.             .withSchedule(SimpleScheduleBuilder 
  71.                         .simpleSchedule() 
  72.                         .withIntervalInSeconds(10) 
  73.                         .withRepeatCount(5)) 
  74.             .build(); 
  75.     ft = sched.scheduleJob(job, trigger); 
  76.     System.out.println(job.getKey() + " 将会在: " + dateFormat.format(ft) + "时运行,"
  77.             + "重复: " + trigger.getRepeatCount() + " 次, "
  78.             + "每 " + trigger.getRepeatInterval() / 1000L + " s 重复一次"); 
  79.     job = JobBuilder.newJob(SimpleJob.class).withIdentity("job4", "group1").build(); 
  80.     System.out.println("当前时间为:"+dateFormat.format(new Date())); 
  81.     trigger = (SimpleTrigger)TriggerBuilder.newTrigger() 
  82.             .withIdentity("trigger4", "group1") 
  83. //设定时间为5分钟后运行
  84.             .startAt(DateBuilder.futureDate(5, DateBuilder.IntervalUnit.MINUTE)) 
  85.             .build(); 
  86.     ft = sched.scheduleJob(job, trigger); 
  87.     System.out.println(job.getKey() + " 将会在: " + dateFormat.format(ft) + "时运行,"
  88.             + "重复: " + trigger.getRepeatCount() + " 次, "
  89.             + "每 " + trigger.getRepeatInterval() / 1000L + " s 重复一次"); 
  90.     job = JobBuilder.newJob(SimpleJob.class).withIdentity("job5", "group1").build(); 
  91.     trigger = (SimpleTrigger)TriggerBuilder.newTrigger() 
  92.             .withIdentity("trigger5", "group1") 
  93.             .startAt(startTime) 
  94.             .withSchedule(SimpleScheduleBuilder 
  95.                         .simpleSchedule() 
  96.                         .withIntervalInSeconds(40) 
  97. //触发器会一直重复执行下去
  98.                         .repeatForever()) 
  99.             .build(); 
  100.     ft = sched.scheduleJob(job, trigger); 
  101.     System.out.println(job.getKey() + " 将会在: " + dateFormat.format(ft) + "时运行,"
  102.             + "重复: " + trigger.getRepeatCount() + " 次, "
  103.             + "每 " + trigger.getRepeatInterval() / 1000L + " s 重复一次"); 
  104.     System.out.println("------- 开始Scheduler ----------------"); 
  105.     sched.start(); 
  106.     System.out.println("------- Scheduler调用job结束 -----------------"); 
  107.     job = JobBuilder.newJob(SimpleJob.class).withIdentity("job6", "group1").build(); 
  108.     trigger = (SimpleTrigger)TriggerBuilder.newTrigger() 
  109.             .withIdentity("trigger6", "group1") 
  110.             .startAt(startTime) 
  111.             .withSchedule(SimpleScheduleBuilder 
  112.                         .simpleSchedule() 
  113.                         .withIntervalInMinutes(1) 
  114.                         .withRepeatCount(20)) 
  115.             .build(); 
  116.     ft = sched.scheduleJob(job, trigger); 
  117.     System.out.println(job.getKey() + " 将会在: " + dateFormat.format(ft) + "时运行,"
  118.             + "重复: " + trigger.getRepeatCount() + " 次, "
  119.             + "每 " + trigger.getRepeatInterval() / 1000L + " s 重复一次"); 
  120.     job = JobBuilder.newJob(SimpleJob.class).withIdentity("job7", "group1") 
  121.             .storeDurably()//该job没有触发器,该方法将durability设置为true
  122.             .build(); 
  123. //添加一个没有出发器的job
  124.     sched.addJob(job, true); 
  125.     System.out.println("手动触发job7..."); 
  126. //jobKey用来唯一的标识一个JobDetail
  127. //执行Job
  128.     sched.triggerJob(JobKey.jobKey("job7", "group1")); 
  129.     System.out.println("------- 等待10S... --------------"); 
  130. try
  131.     { 
  132.       Thread.sleep(10000L); 
  133.     } 
  134. catch (Exception e) 
  135.     { 
  136.     } 
  137.     System.out.println("------- 改变触发器6 --------------------"); 
  138.     trigger = (SimpleTrigger)TriggerBuilder.newTrigger() 
  139.             .withIdentity("trigger10", "group1") 
  140.             .startAt(startTime) 
  141.             .withSchedule(SimpleScheduleBuilder 
  142.                     .simpleSchedule() 
  143.                     .withIntervalInMinutes(1) 
  144.                     .withRepeatCount(20)) 
  145.             .build(); 
  146. //根据触发器获取指定的Job然后更改此Job的触发器
  147. //新的触发器不需要旧的触发器的名称相同
  148.     ft = sched.rescheduleJob(new TriggerKey("trigger6","group1")//获取TriggerKey(用来标识唯一的Trigger)
  149.             , trigger); 
  150.     System.out.println("job6 重新在 " + dateFormat.format(ft)+ "时运行 ,"
  151.             + "重复: " + trigger.getRepeatCount() + " 次, "
  152.             + "每 " + trigger.getRepeatInterval() / 1000L + " s 重复一次"); 
  153.     System.out.println("------- 等待5分钟... ------------"); 
  154. try
  155.     { 
  156.       Thread.sleep(300000L); 
  157.     } 
  158. catch (Exception e) 
  159.     { 
  160.     } 
  161.     System.out.println("------- 关闭Scheduler ---------------------"); 
  162.     sched.shutdown(true); 
  163.     System.out.println("------- 关闭完成 -----------------"); 
  164.     SchedulerMetaData metaData = sched.getMetaData(); 
  165.     System.out.println("Executed " + metaData.getNumberOfJobsExecuted() + " jobs."); 
  166.   } 
  167. public static void main(String[] args) 
  168. throws Exception 
  169.   { 
  170.     SimpleTriggerExample example = new SimpleTriggerExample(); 
  171.     example.run(); 
  172.   } 

运行结果:

[plain] view plaincopy

  1. ------- 初始化 ------------------- 
  2. SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 
  3. SLF4J: Defaulting to no-operation (NOP) logger implementation 
  4. SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 
  5. ------- 初始化完成 -------- 
  6. ------- 向Scheduler加入Job ---------------- 
  7. group1.job1 将会在: 2014年07月31日 13时51分45秒时运行,重复: 0 次, 每 0 s 重复一次 
  8. group1.job2 将会在: 2014年07月31日 13时51分45秒时运行,重复: 10 次, 每 10 s 重复一次 
  9. group1.job2 也会在: 2014年07月31日 13时51分45秒时运行,重复: 2 次, 每 10 s 重复一次 
  10. group1.job3 将会在: 2014年07月31日 13时51分45秒时运行,重复: 5 次, 每 10 s 重复一次 
  11. 当前时间为:2014年07月31日 13时51分41秒 
  12. group1.job4 将会在: 2014年07月31日 13时56分41秒时运行,重复: 0 次, 每 0 s 重复一次 
  13. group1.job5 将会在: 2014年07月31日 13时51分45秒时运行,重复: -1 次, 每 40 s 重复一次 
  14. ------- 开始Scheduler ---------------- 
  15. ------- Scheduler调用job结束 ----------------- 
  16. group1.job6 将会在: 2014年07月31日 13时51分45秒时运行,重复: 20 次, 每 60 s 重复一次 
  17. 手动触发job7... 
  18. ------- 等待10S... -------------- 
  19. SimpleJob类 :group1.job7 在 2014年07月31日 13时51分41秒 时运行 
  20. SimpleJob类 :group1.job1 在 2014年07月31日 13时51分45秒 时运行 
  21. SimpleJob类 :group1.job2 在 2014年07月31日 13时51分45秒 时运行 
  22. SimpleJob类 :group1.job3 在 2014年07月31日 13时51分45秒 时运行 
  23. SimpleJob类 :group1.job5 在 2014年07月31日 13时51分45秒 时运行 
  24. SimpleJob类 :group1.job6 在 2014年07月31日 13时51分45秒 时运行 
  25. SimpleJob类 :group1.job2 在 2014年07月31日 13时51分45秒 时运行 
  26. ------- 改变触发器6 -------------------- 
  27. job6 重新在 2014年07月31日 13时51分45秒时运行 ,重复: 20 次, 每 60 s 重复一次 
  28. ------- 等待5分钟... ------------ 
  29. SimpleJob类 :group1.job6 在 2014年07月31日 13时51分51秒 时运行 
  30. SimpleJob类 :group1.job2 在 2014年07月31日 13时51分55秒 时运行 
  31. SimpleJob类 :group1.job3 在 2014年07月31日 13时51分55秒 时运行 
  32. SimpleJob类 :group1.job2 在 2014年07月31日 13时51分55秒 时运行 
  33. SimpleJob类 :group1.job2 在 2014年07月31日 13时52分05秒 时运行 
  34. SimpleJob类 :group1.job3 在 2014年07月31日 13时52分05秒 时运行 
  35. SimpleJob类 :group1.job2 在 2014年07月31日 13时52分05秒 时运行 
  36. SimpleJob类 :group1.job2 在 2014年07月31日 13时52分15秒 时运行 
  37. SimpleJob类 :group1.job3 在 2014年07月31日 13时52分15秒 时运行 
  38. SimpleJob类 :group1.job2 在 2014年07月31日 13时52分25秒 时运行 
  39. SimpleJob类 :group1.job3 在 2014年07月31日 13时52分25秒 时运行 
  40. SimpleJob类 :group1.job5 在 2014年07月31日 13时52分25秒 时运行 
  41. SimpleJob类 :group1.job2 在 2014年07月31日 13时52分35秒 时运行 
  42. SimpleJob类 :group1.job3 在 2014年07月31日 13时52分35秒 时运行 
  43. SimpleJob类 :group1.job6 在 2014年07月31日 13时52分45秒 时运行 
  44. SimpleJob类 :group1.job2 在 2014年07月31日 13时52分45秒 时运行 
  45. SimpleJob类 :group1.job2 在 2014年07月31日 13时52分55秒 时运行 
  46. SimpleJob类 :group1.job2 在 2014年07月31日 13时53分05秒 时运行 
  47. SimpleJob类 :group1.job5 在 2014年07月31日 13时53分05秒 时运行 
  48. SimpleJob类 :group1.job2 在 2014年07月31日 13时53分15秒 时运行 
  49. SimpleJob类 :group1.job2 在 2014年07月31日 13时53分25秒 时运行 
  50. SimpleJob类 :group1.job6 在 2014年07月31日 13时53分45秒 时运行 
  51. SimpleJob类 :group1.job5 在 2014年07月31日 13时53分45秒 时运行 
  52. SimpleJob类 :group1.job5 在 2014年07月31日 13时54分25秒 时运行 
  53. SimpleJob类 :group1.job6 在 2014年07月31日 13时54分45秒 时运行 
  54. SimpleJob类 :group1.job5 在 2014年07月31日 13时55分05秒 时运行 
  55. SimpleJob类 :group1.job6 在 2014年07月31日 13时55分45秒 时运行 
  56. SimpleJob类 :group1.job5 在 2014年07月31日 13时55分45秒 时运行 
  57. SimpleJob类 :group1.job5 在 2014年07月31日 13时56分25秒 时运行 
  58. SimpleJob类 :group1.job4 在 2014年07月31日 13时56分41秒 时运行 
  59. SimpleJob类 :group1.job6 在 2014年07月31日 13时56分45秒 时运行 
  60. ------- 关闭Scheduler --------------------- 
  61. ------- 关闭完成 ----------------- 

根据SimpleScheduleBuilder配置不同的SimpleTrigger触发器的更多相关文章

  1. Spring整合quartz2.2.3总结,quartz动态定时任务,Quartz定时任务集群配置

    Spring整合quartz2.2.3总结,quartz动态定时任务,Quartz定时任务集群配置 >>>>>>>>>>>>&g ...

  2. 浅谈Trigger(SimpleTrigger&CronTrigger)

     1.Trigger是什么 Quartz中的触发器用来告诉调度程序作业什么时候触发,即Trigger对象是用来触发执行job的.  2.Quartz中的Trigger  3.触发器通用属性: JobK ...

  3. 【Quartz】Quartz存储与持久化-基于quartz.properties的配置

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 一.   Quartz存储与持久化 Quartz提供两种基本作业存储类型.第一种类型叫做RAM ...

  4. Quartz_1_简单编程式任务调度使用(SimpleTrigger)

    最近在工作中,要做定时任务的更能,最开始的时候,想到的是 JavaSE 中,自带 Timer 及 TimerTask 联合使用,完成定时任务.最后发现,随着业务的复杂,JDK 中的 Timer 和 T ...

  5. Quartz.Net - Lesson2: 任务和触发器

    Lesson 2: 任务和触发器 本系列文章是官方3.x文档的翻译,原文地址:https://www.quartz-scheduler.net/documentation/quartz-3.x/tut ...

  6. Quartz.Net系列(十六):通过Plugins模式使用Xml方式配置Job和Trigger和自定义LogPrivider

    1.简单介绍 Quarz.Net中采用插件式来实现配置文件配置,通过XMLSchedulingDataProcessor类进行Xml数据处理 默认配置文件命名:quart_jobs.xml publi ...

  7. Shiro配置Session检测时Quartz版本冲突

    项目背景: shiro 1.3 + quartz 2.x 2018-9-11 22:20:35补充: 经过测试,本人发现 ,通过实现 org.apache.shiro.session.mgt.Exec ...

  8. Jenkins学习四:Jenkins 邮件配置

    本文主要对Windows环境 jenkins 的邮件通知进行介绍 jenkins 内置的邮件功能 使用email-ext插件扩展的邮件功能 邮件通知功能主要包含两个部分:全局配置和项目配置. 一. 先 ...

  9. jenkins配置及使用中出现的问题

    安装中遇到的问题: 1.linux中最好用普通用户安装tomcat和jenkins,用普通用户启动tomcat,否则jenkins工作空间不会在普通用户下,而线上自动发布部署时,是不允许用root用户 ...

随机推荐

  1. redis安装与使用

    linux: 1.下载redis 下载redis: 可以在redis的官网下载 : http://redis.io/ 也可以去谷歌的code下载: http://code.google.com/p/r ...

  2. mysql免安装版使用

    打开命令行,到bin目录下,输入net start mysql 启动服务,输入mysql -u root -p回车后输入密码,进入mysql.

  3. XML--小结①

  4. Navicat 看历史执行SQL

    Navicat可以通过这个框口看手动操作所执行的代码操作

  5. c语言学习之基础知识点介绍(七):循环结构

    本节主要介绍循环结构 一.while循环 /* 语法: while(表达式){ //循环体; } 注意:循环变量.循环条件和循环控制语句三者缺一不可. 例如: */ ; //循环变量 ){ //循环条 ...

  6. Windows 服务与 Web 服务

    两个完全不同的东西. Windows 服务,伴随着windows的启动而启动,主要处理长时间监听的任务. Web服务,基于Web,部署在服务器上,用于处理客户端的请求.

  7. CSS Margin(外边距)

    CSS Margin(外边距)属性定义元素周围的空间. Margin margin清除周围的元素(外边框)的区域.margin没有背景颜色,是完全透明的 margin可以单独改变元素的上,下,左,右边 ...

  8. jQuery 杂项方法

    jQuery 杂项方法 方法 描述 data() 向被选元素附加数据,或者从被选元素获取数据 each() 为每个匹配元素执行函数 get() 获取由选择器指定的 DOM 元素 index() 从匹配 ...

  9. JavaScript DOM编程艺术第二版学习(1/4)

    接下来项目需要网页相关知识,故在大牛的指引下前来阅读本书. 记录方式:本书分四部分阅读,完成阅读之后会多写一篇包括思维导图的算是阅读指南的东西,浏览的童鞋看着指南可以跳过一些不必要的坑~ 当前水平:H ...

  10. VMware虚拟机中如何安装VMWare-Tools详解

    VMware虚拟机中如何安装VMWare-Tools详解 好处:可以支持图形界面,可以支持共享文件功能等 VMware虚拟机中如何配置显 VMware作为一款虚拟机利器,很多人都利用它来实现Linux ...