Quartz學習

自己在網上了解了Quartz框架,寫了個例子

1Quartz介紹

Quartz 是一個開源的作業調度框架,它完全由 Java 寫成,並設計用於 J2SE  J2EE 應用中。它提供了巨大的靈活性而不犧牲簡單性。你能夠用它來爲執行一個作業而創建簡單的或複雜的調度。

2、任務調度實現方式比較

Timer基於開始時間與重複間隔的任務調度(單線程執行)

Scheduler基於開始時間與重複間隔的任務調度(多線程執行)

 Quartz :實現複雜的任務調度。

3、下載(官網下載最新版本Quartz 2.2.1

http://www.quartz-scheduler.org/downloads

4、體系結構

Quartz對任務調度的領域問題進行了高度的抽象,提出了調度器、任務和觸發器這3個核心的概念,並在org.quartz通過接口和類對重要的這些核心概念進行描述 

概念:

scheduler

任務調度器

trigger

觸發器,用於定義任務調度時間規則

job

任務,即被調度的任務作業是能夠調度的可執行任務,實現org.quartz.Job接口即可。

一個job 可以被多個 trigger 關聯,但是一個 trigger 只能關聯一個 job。

5、例子

public classHelloJob implements Job { 

 

@Override

publicvoid execute(JobExecutionContext context) throws JobExecutionException {

//TODO Auto-generated method stub

System.out.println("執行Job時間:"+ new Date()); 

}

 

 

 

import job.HelloJob;

 

importorg.quartz.DateBuilder;

importorg.quartz.JobBuilder;

importorg.quartz.JobDetail;

importorg.quartz.Scheduler;

importorg.quartz.SchedulerException;

importorg.quartz.SimpleScheduleBuilder;

importorg.quartz.Trigger;

importorg.quartz.TriggerBuilder;

importorg.quartz.TriggerKey;

importorg.quartz.impl.StdSchedulerFactory;

 

 

 

public classSimpleExample {

 

 

    public void run() throws Exception { 

           try {

            /*通過SchedulerFactory來獲取一個調度器;STD:standard標準的意思 */ 

            Scheduler scheduler =StdSchedulerFactory.getDefaultScheduler(); 

            /* 作業、任務 */ 

            JobDetail job =JobBuilder.newJob(HelloJob.class).withIdentity("myJobName","myJobGroup").build();

            /* 觸發器 */ 

            Trigger trigger =TriggerBuilder.newTrigger()

                   .withIdentity(TriggerKey.triggerKey("myTrigger","myTriggerGroup"))

                   .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).withRepeatCount(10))

               .startAt(DateBuilder.futureDate(1, DateBuilder.IntervalUnit.SECOND))

                .build();

            scheduler.scheduleJob(job,trigger); 

            scheduler.start(); 

          

            Thread.sleep(60*1000);

            scheduler.shutdown();

        } catch (SchedulerException e) { 

            e.printStackTrace(); 

        } 

    }

   

 

    public static void main(String[] args)throws Exception { 

        SimpleExample example = newSimpleExample(); 

        example.run(); 

    } 

 

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章