gbk

          Quartz定時(shí)任務(wù)學(xué)習(xí)(一)簡(jiǎn)單任務(wù)

          學(xué)習(xí)quartz首先了解三個(gè)概念:

          調(diào)度器:負(fù)責(zé)調(diào)度作業(yè)和觸發(fā)器;

          觸發(fā)器:設(shè)置作業(yè)執(zhí)行的時(shí)間、參數(shù)、條件等;(簡(jiǎn)單觸發(fā)器和Cron觸發(fā)器)

          作業(yè):定時(shí)任務(wù)內(nèi)容,被執(zhí)行的程序;

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

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

          開始:邊看例題邊學(xué)習(xí),首先從簡(jiǎn)單觸發(fā)器開始……

          1、作業(yè)通過實(shí)現(xiàn) org.quartz.job 接口,可以使 Java 類變成可執(zhí)行的。這個(gè)類用一條非常簡(jiǎn)單的輸出語句覆蓋了 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、觸發(fā)器和調(diào)度器

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

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


                  //設(shè)置作業(yè)啟動(dòng)時(shí)間

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


                  //設(shè)置作業(yè)執(zhí)行間隔
                  simpleTrigger.setRepeatInterval(10000);

                  //設(shè)置作業(yè)執(zhí)行次數(shù)
                  simpleTrigger.setRepeatCount(10);

                  //設(shè)置作業(yè)執(zhí)行優(yōu)先級(jí)默認(rèn)為5
                  //simpleTrigger.setPriority(10);


                  //作業(yè)和觸發(fā)器設(shè)置到調(diào)度器中
                  scheduler.scheduleJob(jobDetail, simpleTrigger);
                 
                  //啟動(dòng)調(diào)度器
                  scheduler.start();
              }


          一個(gè)簡(jiǎn)單的quartz任務(wù)就完成了

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


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           

          My Links

          Blog Stats

          常用鏈接

          留言簿(2)

          隨筆檔案

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 成安县| 攀枝花市| 太仆寺旗| 图木舒克市| 乌拉特后旗| 玉环县| 罗田县| 历史| 宜黄县| 贵南县| 泰宁县| 万安县| 余姚市| 永春县| 西丰县| 肥东县| 鄂托克前旗| 灵璧县| 上饶市| 油尖旺区| 山阳县| 吴堡县| 武定县| 太仓市| 通渭县| 嵊泗县| 乃东县| 扶沟县| 托里县| 左云县| 垫江县| 玉山县| 安顺市| 固阳县| 滨海县| 泰州市| 德兴市| 余姚市| 霍邱县| 田林县| 轮台县|