Quartz任務排程的簡單應用
阿新 • • 發佈:2018-12-16
Quartz框架主要分為三部分: 1 任務 2 觸發器 3 排程器 謝了一個簡單例子,大家可以看下
public class RemindJob implements Job { int[]param=new int[]{1,2,3,4,5,6,7}; @Override public void execute(JobExecutionContext arg0) throws JobExecutionException { for(int i=0;i<param.length;i++){ if(param[i]<10){ param[i]=5; } System.out.println(param[i]); } } }
建立一個任務類,下面是一個測試類
public class TestQuartz { public static void main(String[] args) throws SchedulerException, ParseException, InterruptedException { //建立job 任務 JobDetail job=new JobDetail("myJob","A",RemindJob.class); //建立觸發器-trigget SimpleTrigger trigger=new SimpleTrigger("myTrigger", SimpleTrigger.REPEAT_INDEFINITELY,3000); //秒 分 時 日 月 周 年 日和周如果不是實際數,必須有一個是?,一個是*來代表 //中劃線 範圍 //逗號 列表 //除號 增量 CronTrigger cronTrigger=new CronTrigger("myCronTrigger","B","0/3 * * ? * * "); // trigger.setStartTime(new Date(System.currentTimeMillis()+1000)); //建立排程器 //建立Scheduler工程 SchedulerFactory factory=new StdSchedulerFactory(); Scheduler scheduler=factory.getScheduler(); //粘合任務和排程器 // scheduler.scheduleJob(job,trigger); scheduler.scheduleJob(job,cronTrigger); scheduler.start(); Thread.sleep(2000000); scheduler.shutdown(); } }
CronTrigger(“myCronTrigger”,“B”,"0/3 * * ? * * ");裡面的"0/3 * * ? * * "非常有意思,這個是6個,分別是秒,分,時,日,月,周.當年也可以在加個年。其中日和周可以用?代替,代表每一天,每一週,但只能存在一個問號,另一個必須用*代替。 秒,分,時分別可用,和—來標識,如0-10 13 14 * * ? 這個就代表每週的14點13分0至10. 很簡單,每隔三秒執行一次,將數組裡面的值如果小於10,就都賦值成為5. 這個定時任務應用就比較廣泛了,比如媒體定時釋出新聞,設定哪一天定時釋出,那就可以寫一個方法,每隔幾秒鐘查詢一次資料庫,當然查出來的資料是一個集合。當定時的時間小於等於系統時間,就可改變狀態釋出了