




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、作業調度框架 Quartz 學習筆記 (二 )簡單回顧一下上一節學習到的 HelloWorld 1創建一個job類,實現Job接口,覆蓋public voidexecute(JobExecutionContext context) 方法,在方法中寫入你 要執行的操作 (數據導入 /備份 ,輪詢檢查文件等 )代碼2 創建一個主線程類 , 獲得 Scheduler 對象 SchedulerFactory sf = new StdSchedulerFactory();Scheduler sched = sf.getScheduler(); 獲得要執行的對象 JobDetail job = newJo
2、b(HelloJob.class).withIdentity(job1, group1).build();定義觸發器 Trigger trigger = newTrigger().withIdentity(trigger1, group1).startAt(runTime).build();將任務和 Trigger 放入 scheduler : sched.scheduleJob(job, trigger);啟動 和 停止sched.start(); sched.shutdown(true);注意 給 job 留有足夠長的時間 ,如果主線程類停止工作,job線程也會停止工作我是分割線經過了 H
3、elloWorld 之后 ,您老人家可能對 Quartz 有所了 解,下面讓我們繼續深入 ,學習下 Quartz 重復執行任務該怎么 做簡單的說就是 觸發器(Trigger)的參數設置什么?觸發器(Trigger) 不知道是什么 ?出門左轉 << 作業調度框架 Quartz 學習筆記(一 )>>不謝還是老套路 ,一個 job 類 ,一個主線程類SimpleJob.javajava view plaincopypublic class SimpleJob implements JobOverridepublic voidexecute(JobExecutionContex
4、t context)throwsJobExecutionException / job 的名字String jobName = context.getJobDetail().getKey().getName();/ 任務執行的時間SimpleDateFormat dateFormat= new SimpleDateFormat(yyyy 年 MM 月 dd 日 HH 時 mm 分 ss 秒);String jobRunTime =dateFormat.format(Calendar.getInstance().getTime();/ 輸出任務執行情況任務 : + jobName + 在 +jo
5、bRunTime + 執行了); 在這里 對輸出 的日期進行了一小下 格式化 ,適應國人習 慣.其它沒什么好說的 0.0SimpleTriggerExample.java/* * SimpleTriggers ( 簡單觸發器 ) 的使用 . */ public classSimpleTriggerExample public static void main(String args) throws Exception SimpleTriggerExample example = new SimpleTriggerExample(); example.run(); public void run
6、() throws Exception / 日期格式化 SimpleDateFormat dateFormat = new SimpleDateFormat(yyyy 年 MM 月 dd 日 HH 時 mm 分 ss 秒 );SchedulerFactory sf = new StdSchedulerFactory(); Scheduler sched = sf.getScheduler();System.out.println(/ 下一個第 15 秒 例 : 則 執行時間為 15 秒 執行時間為 30 秒 行時間為 45 秒 時間為 00 秒 初始化/Date startTime =); 當
7、前 10 秒, 當前 16 秒 ,則 當前 33 秒 ,則 執 當前 48 秒 ,則 執行DateBuilder.nextGivenSecondDate(null, 15); / job1 將只會執行一次JobDetail job =newJob(SimpleJob.class).withIdentity(job1, group1).build(); SimpleTrigger trigger = (SimpleTrigger) newTrigger() .withIdentity(trigger1, group1).startAt(startTime).build();/ 把 job1 和
8、trigger 加入計劃 . ft: 此任務要執行的時間Date ft = + 將在 : + dateFormat.format(ft) + 時運行 .并且重復 : + trigger.getRepeatCount() + 次 , 每次間隔 + trigger.getRepeatInterval() / 1000 + 秒 );/job2 將只會和執行一次 (和 job1 一樣一樣的 ,吼 ) job = newJob(SimpleJob.class).withIdentity(job2, group1).build();trigger = (SimpleTrigger)newTrigger()
9、 .withIdentity(trigger2, group1).startAt(startTime).build(); ft = sched.scheduleJob(job, trigger);+ 將在 : + dateFormat.format(ft) + 時運行 .并且重復 : + trigger.getRepeatCount() + 次 , 每次間隔 + trigger.getRepeatInterval() / 1000 + 秒 );/job3 將執行 11次(執行 1次,重復 10次) ,每 10秒重復一次job = newJob(SimpleJob.class).withIden
10、tity(job3,group1).build();trigger =newTrigger().withIdentity(trigger3,group1).startAt(startTime).withSchedule(simpleSchedule().withIntervalInSeconds(10)/ 重復間隔.withRepeatCount(10)/ 重復次數.build();ft = sched.scheduleJob(job, trigger); 將在 : + dateFormat.format(ft) + 時運行 .并且重復 : + trigger.getRepeatCount()
11、 + 次 , 每次間隔 + trigger.getRepeatInterval() / 1000 + 秒 );/ trigger3 改變了 . 每隔 10s 重復 .共重復 2 次此處說明 , 上面 job3 已經 設定了 trigger3 重復 10 次,每次10s/在這里又改變了 trigger3 的設置 ,不會對以前構成影響,而是當做一個新的來處理trigger =newTrigger().withIdentity(trigger3,group2).startAt(startTime).withSchedule(simpleSchedule()s(10).withIntervalInSe
12、cond.withRepeatCount(2).forJob(job).build(); ft =sched.scheduleJob(trigger);System.out.println(job.getKey().getName() + 改變過 trigger3 屬性的 job3 : + dateFormat.format(ft) + 時運行 .并且重復 :+ trigger.getRepeatCount() + 次 , 每次 間隔 + trigger.getRepeatInterval() / 1000 + 秒);/ job5 將在 5 分鐘后運行一次job = newJob(Simple
13、Job.class).withIdentity(job5, group1).build();trigger = (SimpleTrigger)newTrigger() .withIdentity(trigger5, group1) .startAt(futureDate(5, IntervalUnit.MINUTE) / 設定 5 分鐘后運 行 .build(); ft = sched.scheduleJob(job, trigger);將在 : + dateFormat.format(ft) + 時運行 .并且重復 : + trigger.getRepeatCount() + 次 , 每次間
14、隔 /+ trigger.getRepeatInterval() / 1000 + 秒 );job6 每 40s 運行一次 ,沒有指定重復次數 ,則無下限的重復job = newJob(SimpleJob.class).withIdentity(job6, sched.scheduleJob(job, trigger);group1).build();trigger =newTrigger().withIdentity(trigger6,group1).startAt(startTime).withSchedule(simpleSchedule().withIntervalInSeconds(
15、40).repeatForever().build();ft =+ 將在 : + dateFormat.format(ft) + 時運行 .并且重復 : + trigger.getRepeatCount() + 次 , 每次間隔 + trigger.getRepeatInterval() / 1000 + 秒 );/所有的任務都被加入到了 scheduler 中 ,但只有schedulers.start(); 時才開始執行 開始調度 (調用 .start() 方法 ); 系統 啟 動 的 時間 : + dateFormat.format(new Date();/ 在 scheduled.sta
16、rt(); 之后 ,還可以將 jobs 添加到執行計劃 中 / job7 將重復 20 次 ,每 5 分鐘重復一次job = newJob(SimpleJob.class).withIdentity(job7,group1).build(); newTrigger() group1).withSchedule( chedule() s(5) / 5 分 鐘trigger = .withIdentity(trigger7,.startAt(startTime)simpleS.withRepeatCount(20).build();.withIntervalInMinute/ 重復 20 次ft
17、= sched.scheduleJob(job, trigger);+ 將在 : + dateFormat.format(ft) + 時運行 .并且重復 : + trigger.getRepeatCount() + 次 , 每次間隔 + trigger.getRepeatInterval() / 1000 + 秒 );/job8 可以立即執行 . 無 trigger 注冊 job = 手動觸發 job8.( 立即執行 );sched.triggerJob(jobKey(job8, group1);System.out.println(等待 30 秒. );try Thread.sleep(30
18、L * 1000L); catch (Exception e) / job7 將馬上執行 ,重復10 次 ,每秒一次System.out.println( 重新安排 . );trigger =newTrigger().withIdentity(trigger7,group1).startAt(startTime).withSchedule(simpleSchedule().withIntervalInMinutes(5).withRepeatCount(20).build(); ft = sched.rescheduleJob(trigger.getKey(), trigger);被重新安排
19、在 : +dateFormat.format(ft) + 執行 . r 當前時間 : + dateFormat.format(new Date()+ 預定執行時間已過 ,任務立即 執行 ); try 等待 5 分鐘 .);Thread.sleep(300L * 1000L); catch (Exception e) 調度已關閉 ); / 顯示一下 已經執行的任務信息SchedulerMetaData metaData =sched.getMetaData();執行了 + metaData.getNumberOfJobsExecuted() + 個 jobs.); 幾點說明 :1 DateBuilder.next
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司組織沖刺活動方案
- 公司生日座談會策劃方案
- 公司文體協會活動方案
- 2025年現代財務管理考試試題及答案
- 2025年生物醫學工程基礎知識與技術應用考試試卷及答案
- 2025年審判與執行實務考試試卷及答案
- 2025年科學傳播與社會認知的能力測試考試卷及答案
- 2025年臨床醫學專業執業醫師考試試卷及答案
- 滬教版(五四學制)(2024)六年級下冊英語期末復習Units1-2知識清單
- 2025年翻譯專業技術資格考試題及答案
- 第19章一次函數-一次函數專題數形結合一一次函數與45°角模型講義人教版數學八年級下冊
- 2023年四川省宜賓市敘州區數學六年級第二學期期末考試模擬試題含解析
- 幼兒園警察職業介紹課件
- 棉印染清潔生產審核報告
- 滅火器維修與報廢規程
- 皮膚病的臨床取材及送檢指南-修訂版
- 機型理論-4c172實用類重量平衡
- 校企合作項目立項申請表(模板)
- 管道工廠化預制推廣應用課件
- 海水的淡化精品課件
- 項目工程移交生產驗收報告
評論
0/150
提交評論