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. 内核增加支持yaffs2错误问题汇总

    Q1: fs/yaffs2/yaffs_mtdif2.c:xxx: error: 'struct xxx1' has no member named 'fun_xxx' A1:比对fun_xxx和st ...

  2. HTML5本地化应用开发-HTML5 Web存储详解

    文章不是简单的的Ctrl C与V,而是一个字一个标点符号慢慢写出来的.我认为这才是是对读者的负责,本教程由技术爱好者成笑笑(博客:http://www.chengxiaoxiao.com/)写作完成. ...

  3. Nico Game Studio 3.地图纹理编辑 物体皮肤编辑

    完成功能: 1.地图纹理编辑功能. 图层编辑,添加/删除纹理,地图编辑.网格绘制.

  4. asp.net - GridView根据linkButton值不同跳转不同页面

    一,当前页面中,前台界面的主要代码: <asp:TemplateField HeaderText="姓名"> <ItemTemplate> <!--根 ...

  5. Powershell profile.ps1 cannot be loaded because its operation is blocked by software restriction policies

    Powershell profile.ps1 cannot be loaded because its operation is blocked by software restriction pol ...

  6. BestCoder Round #85 sum

    大晚上的更一道下午的水题吧.(虽然WA了好多次= =,但真实情况是我比较水) 描述 Given a sequence, you're asked whether there exists a cons ...

  7. 中文翻译:pjsip教程(三)之ICE stream transport的使用

    1:pjsip教程(一)之PJNATH简介 2:pjsip教程(二)之ICE穿越打洞:Interactive Connectivity Establishment简介 3:pjsip教程(三)之ICE ...

  8. MySQL 时间戳(Timestamp)函数

    1. MySQL 获得当前时间戳函数:current_timestamp, current_timestamp() mysql> select current_timestamp, curren ...

  9. sec:authorize 标签 通过不通过权限例子

    1. 方式一     <sec:authorize ifAnyGranted="ROLE_A">     <a href="a.jsp"> ...

  10. ie9以上浏览器input文本框/密码框后面的小叉子/小眼睛问题

    找了很久不知什么属性控制的这个东西,经过群友的指点重要找到.