quartz使用(二)

quartz中的job 的具體說明:

job是一個接口,只有一個方法void execute(JobExecutionContext context),開發者實現該接口定義運行任務,JobExecutionContext類提供了調度上下文的各種信息。Job運行時的信息保存在JobDataMap實例中;

job可分爲無狀態和有狀態的job。它們之間的重大區別就是:兩個或多個有狀態的 JobDetail 實例不能併發執行。說的是你創建並註冊了一個有狀態 JobDetail 到 Scheduler 上。你還建立了兩個 Trigger 來觸發這個 Job:一個每五分鐘觸發,另一個也是每五分釧觸發。假如這兩個 Trigger 試圖在同一時刻觸發 Job,框架是不允許這種事情發生的。第二個 Trigger 一直會被阻塞直到第一個結束。

        //創建相關的job信息
        JobDetail job = newJob(HelloJobZ.class)
            .withIdentity("jobtest1", "grouptest1")
            .build();

trigger

trigger用來設置job的執行時間,執行頻率。job只是執行的任務,根據trigger設置的頻率,時間來執行job。trigger可分CronTrigger 和 SimpleTrigger 。SimpleTrigger裏面提供一些方法,可以按間隔時間執行。個人認爲,CronTrigger比較靈活一些,可以更方便的設置執行的時間和頻率。

例如:

//創建一個觸發器的名稱
        CronTrigger trigger =  newTrigger()
              .withIdentity("triggertest1", "grouptest1")
              .withSchedule(cronSchedule("0/20 * * * * ?"))
              .startNow()
              .build();




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