運用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.     }  
相關文章
相關標籤/搜索