日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Quartz快速入门

發布時間:2025/3/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Quartz快速入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Quartz快速入門


1.下載地址http://www.quartz-scheduler.org/downloads/ 寫此文章時的最新版是2.2.1。 2.解壓縮將基本包quartz-2.2.1.jar放到工程中,如果你工程中連log4j都沒有的話,那就把日志相關的幾個jar包一起放到工程中。 ? 3.配置 創建quartz.properties文件 org.quartz.scheduler.instanceName?=?MyScheduler---------scheduler的名字,隨便起一個名字(還是起個有點意義的名字吧)
org.quartz.threadPool.threadCount=?3?--------線程池中最大線程數是3(最多三個job同時執行)
org.quartz.scheduler.skipUpdateCheck?=?true
---跳過Quartz的自動更新檢查 配置參考:http://quartz-scheduler.org/documentation/quartz-2.x/configuration 4.一下是代碼了,為了方便將官方的代碼靠過來稍作修改,代碼里有標明。 1 import org.quartz.Scheduler; 2 import org.quartz.SchedulerException; 3 import org.quartz.impl.StdSchedulerFactory; 4 5 publicclassQuartzTest{ 6 7 publicstaticvoid main(String[] args){ 8 9 try{ 10 // Grab the Scheduler instance from the Factory 11 //初始化scheduler,官方文檔使用的后面的內容,所有配置都是默認值,為了使用我們辛苦配置的配置文件,我們用前面的方法。 12 Scheduler scheduler = new StdSchedulerFactory("quartz.properties").getScheduler();//StdSchedulerFactory.getDefaultScheduler(); 13 14 // and start it off 15 scheduler.start(); 16 //---------------插入執行的代碼-------------------------- 17 scheduler.shutdown(); 18 19 }catch(SchedulerException se){ 20 se.printStackTrace(); 21 } 22 } 23 }

?

(以上參考http://quartz-scheduler.org/overview/quick-start 以上代碼就可以執行了,不過什么都沒干,只是啟動了和關閉了一下。- - ! 5. do something 要do sth需要Job,Trigger這些都是Quartz里的基本元素。看名字也能明白Job是干活的藍領。Trigger是觸發Job執行的,定時任務最關鍵的時間就是靠定義Trigger是定義的。 創建Job 新建一個類實現Job接口并寫execute方法實現。 1 import java.util.Date; 2 3 import org.apache.log4j.Logger; 4 import org.quartz.Job; 5 import org.quartz.JobExecutionContext; 6 import org.quartz.JobExecutionException; 7 8 public class JobTest implements Job{ 9 10 private static Logger logger = Logger.getLogger(JobTest.class); 11 12 public void execute(JobExecutionContext arg0) throws JobExecutionException { 13 logger.info("Hello world-----myQuartz-------class:JobTest method:execute" + new Date()); 14 15 } 16 17 } 18 然后,在第4步-----插入執行的代碼-------的位置插入以下代碼 19 try { 20 //定義一個任務,并綁定JobTest(自己創建的任務類) 21 JobBuilder jobBuilder = JobBuilder.newJob(JobTest.class); 22 jobBuilder.withIdentity("Job1", "Group1"); 23 24 JobDetail job = jobBuilder.build(); 25 //定義一個觸發任務執行的觸發器 26 TriggerBuilder<Trigger> triggerBuilder = TriggerBuilder.newTrigger(); 27 triggerBuilder.withIdentity("Trigger1", "TriggerGroup1"); 28 //定義執行時間 29 Date runTime = DateBuilder.evenSecondDate(new Date()); 30 31 triggerBuilder.startAt(runTime); 32 triggerBuilder.withSchedule(SimpleScheduleBuilder.simpleSchedule(). 33 withIntervalInMilliseconds(10000).repeatForever()); 34 35 Trigger trigger = triggerBuilder.build(); 36 37 scheduler.scheduleJob(job, trigger); 38 logger.info(job.getKey() + " will run at...: " + runTime); 39 scheduler.start(); 40 logger.info("------- Started Scheduler -----------------"); 41 42 logger.info("------- Waiting 65 seconds... -------------"); 43 try { 44 Thread.sleep(65000); 45 } catch (InterruptedException e) { 46 e.printStackTrace(); 47 } 48 logger.info("------- Shutting Down ---------------------"); 49 scheduler.shutdown(); 50 logger.info("------- Shutdown Complete -----------------"); 51 } catch (SchedulerException e) { 52 e.printStackTrace(); 53 } View Code

?

汗!可算寫完了,這么長。最好弄個Util工具類 一下是我寫的工具類,主要實現job和trigger的創建,大家借鑒: ? 1 import java.util.Date; 2 3 import org.quartz.Job; 4 import org.quartz.JobBuilder; 5 import org.quartz.JobDetail; 6 import org.quartz.Scheduler; 7 import org.quartz.SchedulerException; 8 import org.quartz.SimpleScheduleBuilder; 9 import org.quartz.Trigger; 10 import org.quartz.TriggerBuilder; 11 import org.quartz.impl.StdSchedulerFactory; 12 13 /** 14 * 定時任務工具類 15 * @author llhua 16 * 17 */ 18 public class TaskUtil { 19 /** 20 * 初始化一個全部默認配置的scheduler 21 * @return 22 * @throws SchedulerException 23 */ 24 public static Scheduler getDefaultScheduler() throws SchedulerException{ 25 return StdSchedulerFactory.getDefaultScheduler(); 26 } 27 28 /** 29 * 初始化一個通過配置文件配置的配置的scheduler 30 * @return 31 * @throws SchedulerException 32 */ 33 public static Scheduler getScheduler(String confFile) throws SchedulerException{ 34 return new StdSchedulerFactory(confFile).getScheduler(); 35 } 36 37 /** 38 * 定義一個job 39 * @param jobClazz 40 * @param name 41 * @param group 42 * @return 43 */ 44 public static JobDetail getJob(Class<? extends Job> jobClazz, String name, String group){ 45 return JobBuilder.newJob(jobClazz).withIdentity(name, group).build(); 46 } 47 48 /** 49 * 定義一個立即開始的觸發器(.startNow()) 50 * @param schedBuilder 51 * @param name 52 * @param group 53 * @return 54 * 55 * SimpleScheduleBuilder一般用法 56 * SimpleScheduleBuilder.simpleSchedule(). 57 withIntervalInMilliseconds(10000).repeatForever() 58 */ 59 public static Trigger getSimpleTrigger(SimpleScheduleBuilder schedBuilder, String name, String group){ 60 return TriggerBuilder.newTrigger().withIdentity(name, group).startNow().withSchedule(schedBuilder).build(); 61 } 62 /** 63 * 定義一個在指定時間開始的觸發器(.startAt()) 64 * @param schedBuilder 65 * @param name 66 * @param group 67 * @return 68 */ 69 public static Trigger getSimpleTrigger(Date runTime, SimpleScheduleBuilder schedBuilder, String name, String group){ 70 return TriggerBuilder.newTrigger().withIdentity(name, group).startAt(runTime).withSchedule(schedBuilder).build(); 71 } 72 73 public static Trigger getCronTrigger(){ 74 return null; 75 } 76 77 public static Trigger getNthIncludedDayTrigger(){ 78 return null; 79 } 80 81 } View Code

?

說明:最下面有三個get Trigger的方法代表了Quartz中已經有的三種Trigger,簡單的已經可以實現基本的應用了,如有復雜應用可以實現下面兩種。在下目前還沒用到。



來自為知筆記(Wiz)



轉載于:https://www.cnblogs.com/llhua/p/3393306.html

總結

以上是生活随笔為你收集整理的Quartz快速入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。