运用quartz实现的java定时器

1、什么是定时器java

        定时器的用途方方面面,早上叫咱们起床的闹钟,洗衣机、微波炉、电视机、空调都有定时设置。ide

        而定时器通常能够分为两个部分:触发装置和触发事件。而触发装置中又有对时间的控制。测试

 

2、咱们的软件定时器spa

        在java中,咱们的软件定时器也是分为这两个部分。继承

       采用quartz实现触发器时,首先是经过一个Scheduler来对触发器及出发事件的控制。触发器中含有触发开始时间、触发结束时间、触发次数和触发周期的参数调用方法来对以上属性进行控制。而触发事件是经过继承Job接口的方式实现,最后在触发时自动调用触发事件。接口

 

3、java定时器实例解析事件

首先,个人工程调用了一下三个jar包ci

quartz-all-1.6.1.jar 定时器核心类
commons-collections.jar 共通类
commons-logging-1.0.4.jar 共通类

 如下实例是启动后三秒开始执行第一次,每隔10秒get

定时器测试类string

  
  
           
  
  
  1. /**  
  2.  * @brief 定时器测试类  
  3.  *   
  4.  * @author Administrator  
  5.  * @date 2012-5-8  
  6.  */ 
  7. public class Test {  
  8.  
  9.     public static void main(String[] args){  
  10.         InitScheduler.init();  
  11.     }  

时间管理类Scheduler

  
  
           
  
  
  1. /**  
  2.  * @brief 时间管理类  
  3.  *   
  4.  * @author Administrator  
  5.  * @date 2012-5-8  
  6.  */ 
  7. public class InitScheduler {  
  8.  
  9.     private static Scheduler sched = null;;  
  10.       
  11.     public static void init(){  
  12.         try {  
  13.             //初始化Scheduler  
  14.             sched = (new StdSchedulerFactory()).getScheduler();  
  15.             //定时执行MyJob中默认方法  
  16.             //第一个是任务的名称,第二个是组名,第三个就是实际当任务须要执行的回调类。  
  17.             JobDetail jobDetail = new JobDetail("myjob",  
  18.                     "groupsimpletrigger", MyJob.class);  
  19.             //第一个是Trigger的名称,第二个是Trigger的组名,第三个是任务开始时间,第四个是结束时间,第五个是重复  
  20.             //次数(使用SimpleTrigger.REPEAT_INDEFINITELY常量表示无限次),最后一个是重复周期(单位是毫秒),  
  21.             //触发器,这里是开始3秒后执行,以后每十秒执行一次  
  22.             SimpleTrigger simpletrigger = new SimpleTrigger(  
  23.                     "simpletrigger",   
  24.                     "groupsimpletrigger",   
  25.                     new Date(System.currentTimeMillis() + 3000),  
  26.                     null,  
  27.                     SimpleTrigger.REPEAT_INDEFINITELY,   
  28.                     10L * 1000L);  
  29.               
  30.             //给咱们的时间计划sched添加job及触发器,每一个sched可添加多个job及触发器  
  31.             sched.scheduleJob(jobDetail, simpletrigger);  
  32.               
  33.             //开始执行时间计划  
  34.             sched.start();  
  35.         } catch (SchedulerException e) {  
  36.             // TODO Auto-generated catch block  
  37.             e.printStackTrace();  
  38.         }  
  39.     }  


 

继承了Job接口的任务类

  
  
           
  
  
  1. /**  
  2.  * @brief 继承了Job接口的任务类  
  3.  *   
  4.  * @author Administrator  
  5.  * @date 2012-5-8  
  6.  */ 
  7. public class MyJob implements Job{  
  8.  
  9.     /** @brief XXX */ 
  10.     @Override 
  11.     public void execute(JobExecutionContext arg0) throws JobExecutionException {  
  12.         // TODO Auto-generated method stub  
  13.         //输出执行myjob的时间  
  14.         System.out.println("执行myjob时间:"new Date());  
  15.     }