關於Quartz定時任務的使用

2021-08-10 03:43:16 字數 1590 閱讀 9129

使用場景:不同的學校,都有乙個或多個多個負責人需要接收到教師早上到校的記錄。不同學校的接收時間不相同,可以靈活配置。

以上使用場景,簡單的timer定時器也可以滿足程式的需求。自己寫乙個定時任務的連線池,記錄對應時間的觸發,傳入引數,執行程式時需要知道是哪個學校觸發的執行。

以上的使用場景,有現成的輪子,quartz可以滿足以上的使用方式。

使用前需要明確幾個概念: 1、

scheduler,乙個容器,存放trigger和job。程式裡註冊乙個scheduler即可。

trigger和jobdetail可以註冊到scheduler中,兩者在scheduler中擁有各自的組及名稱,組及名稱是scheduler查詢定位容器中某一物件的依據,trigger的組及名稱必須唯一,jobdetail的組和名稱也必須唯一(但可以和trigger的組和名稱相同,因為它們是不同型別的)

這樣我可以很方便地根據學校的名稱來找到對應的定時任務,進行修改傳送簡訊的時間

2、job 是乙個介面,只有乙個方法void execute(jobexecutioncontext context) ,也就是任務的執行程式,我的發資訊的方法,就是需要放在裡面。學校的資訊等引數,可以儲存到jobdatamap,通過呼叫方法拿到 3、

jobdetail :

quartz在每次執行job時,都重新建立乙個job例項,所以它不直接接受乙個job的例項,相反它接收乙個job實現類,以便執行時通過newinstance()的反射機制例項化job。這個看不懂就看不懂吧,知道怎麼用就行了,其實我也沒太明白

4、trigger:觸發器,定義的觸發規則,其中crontrigger規則功能非常非常強大,不只可以規定每天幾點幾分執行,還可以很方便地規定每週幾執行,每月幾號執行,每年的某月某日執行等等……

5、calendar:它是一些日曆特定時間點的集合,乙個trigger可以和多個calendar關聯,以便排除或包含某些時間點。

其他的類似於執行緒池等概念沒有用到,就不再多說了。

以下是我寫的測試**,屬於乙個最簡單的quartz應用了

首先定義了兩個不兩同的job,實現job介面中的execute方法:

public class testjob1 implements job

}

public class testjob2 implements job 

}

然後註冊了幾個任務,包括每0秒執行,每1秒執行,每10秒執行,每20秒執行……

public class triggertest 

public static synchronized void addonetrigger(string second, string minute, string hour, string jobname,int index) catch (schedulerexception ex) }}

最後的執行結果為

注意,時間是從0開始的,也就是 24,60,60的數字可能會註冊不成功,只能對應0

quartz定時任務的使用

需要加入依賴和配置檔案 依賴 org.quartz schedulergroupid quartzartifactid 2.2.1version dependency xmlns xmlns xsi xmlns context xmlns tx xmlns task xmlns aop xsi sc...

定時任務 quartz的使用

工作中使用到了quartz來做一些定時任務,做下筆記 導包 org.quartz scheduler groupid quartz artifactid 2.3.0 version dependency 新建任務 實現job,重寫execute 方法在裡面寫一些業務邏輯的 package com.y...

quartz定時任務

此檔案被包含在spring配置檔案中,其中 引數 的值遵循如下規則 0 0 12 每天中午12點觸發 0 15 10 每天上午10 15觸發 0 15 10 每天上午10 15觸發 0 15 10 每天上午10 15觸發 0 15 10 2005 2005年的每天上午10 15觸發 0 14 在每天...