gbk

          Quartz定時任務學習(一)簡單任務

          學習quartz首先了解三個概念:

          調度器:負責調度作業和觸發器;

          觸發器:設置作業執行的時間、參數、條件等;(簡單觸發器和Cron觸發器)

          作業:定時任務內容,被執行的程序;

          下載必要的jar包,直接去官網下載,將quartz-x.x.x.jar 和core 和/或 optional 文件夾中的 jar 文件放在項目的文件夾或項目的類路徑中

          Quartz的幾個核心的接口和類為:
          Job接口:自己寫的“定時程序”實現此接口的void execute(JobExecutionContext arg0)方法,Job還有一類為有狀態的StatefulJob接口,如果我們需要在上一個作業執行完后,根據其執行結果再進行下次作業的執行,則需要實現此接口。
          Trigger抽象類:調度類(Scheduler)在時間到時調用此類,再由trigger類調用指定的定時程序。
          Quertz中提供了兩類觸發器為:SimpleTrigger,CronTrigger。前者用于實現比較 簡單的定時功能,例如幾點開始,幾點結束,隔多長時間執行,共執行多少次等,后者提供了使用表達式來描述定時功能,因此適用于比較復雜的定時描述,例如每 個月的最后一個周五,每周的周四等。
          JobDetail類:具體某個定時程序的詳細描述,包括Name,Group,JobDataMap等。
          JobExecutionContext類:定時程序執行的run-time的上下文環境,用于得到當前執行的Job的名字,配置的參數等。
          JobDataMap類:用于描述一個作業的參數,參數可以為任何基本類型例如String,float等,也可為某個對象的引用.
          JobListener,TriggerListener接口:用于監聽觸發器狀態和作業掃行狀態,在特寫狀態執行相應操作。
          JobStore類:在哪里執行定進程序,可選的有在內存中,在數據庫中。

          開始:邊看例題邊學習,首先從簡單觸發器開始……

          1、作業通過實現 org.quartz.job 接口,可以使 Java 類變成可執行的。這個類用一條非常簡單的輸出語句覆蓋了 execute(JobExecutionContext context) 方法。

          import java.util.Date;
          import org.quartz.Job;
          import org.quartz.JobExecutionContext;
          import org.quartz.JobExecutionException;

          public class SimpleQuartzJob implements Job {

              public SimpleQuartzJob() {
              }

              public void execute(JobExecutionContext context) throws JobExecutionException {
                  System.out.println("In SimpleQuartzJob - executing its JOB at "
                          + new Date() + " by " + context.getTrigger().getName());
              }
          }

          2、觸發器和調度器

          public void task() throws SchedulerException
              {
                  //通過SchedulerFactory來獲取一個調度器
                  SchedulerFactory schedulerFactory = new StdSchedulerFactory();
                  Scheduler scheduler = schedulerFactory.getScheduler();
                  
                  
                  
                  //引進作業程序
                  JobDetail jobDetail =
                  new JobDetail("jobDetail-s1", "jobDetailGroup-s1", SimpleQuartzJob.class);

                   //new一個觸發器
                  SimpleTrigger simpleTrigger =
                  new SimpleTrigger("simpleTrigger", "triggerGroup-s1");


                  //設置作業啟動時間

                  long ctime = System.currentTimeMillis();
                  simpleTrigger.setStartTime(new Date(ctime));


                  //設置作業執行間隔
                  simpleTrigger.setRepeatInterval(10000);

                  //設置作業執行次數
                  simpleTrigger.setRepeatCount(10);

                  //設置作業執行優先級默認為5
                  //simpleTrigger.setPriority(10);


                  //作業和觸發器設置到調度器中
                  scheduler.scheduleJob(jobDetail, simpleTrigger);
                 
                  //啟動調度器
                  scheduler.start();
              }


          一個簡單的quartz任務就完成了

          posted on 2008-07-20 01:17 百科 閱讀(393) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          My Links

          Blog Stats

          常用鏈接

          留言簿(2)

          隨筆檔案

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 胶南市| 马尔康县| 荣成市| 鄂温| 麟游县| 惠安县| 伽师县| 南城县| 沿河| 民权县| 剑川县| 耿马| 晋州市| 滨海县| 桦南县| 集贤县| 东港市| 唐山市| 镇沅| 西和县| 南郑县| 八宿县| 邹平县| 正镶白旗| 新源县| 贵南县| 淮安市| 陵水| 辉县市| 大同县| 成都市| 视频| 无棣县| 美姑县| 常熟市| 耒阳市| 石屏县| 石景山区| 蕉岭县| 南部县| 上思县|