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)

          隨筆檔案

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 佛冈县| 田东县| 宣化县| 延津县| 安仁县| 临颍县| 离岛区| 观塘区| 宜阳县| 酉阳| 开江县| 全椒县| 措勤县| 远安县| 湘阴县| 斗六市| 长丰县| 江津市| 亳州市| 阳西县| 赫章县| 五寨县| 翁牛特旗| 夏邑县| 高阳县| 静乐县| 从江县| 资阳市| 潢川县| 来安县| 乌鲁木齐市| 论坛| 曲麻莱县| 仲巴县| 祁东县| 宁河县| 贺州市| 永川市| 邢台市| 芜湖市| 登封市|