6.22Java任務排程框架:Quartz
阿新 • • 發佈:2021-06-23
Java任務排程框架:Quartz
由四大部分組成:
-
Scheduler--->排程器,控制所有的排程
-
Trigger--->觸發條件,採用DSL模式
-
DSL:--->Domain-specific language領域特定語言,受限表達下的一種計算機程式語言。宣告式程式設計
-
Method Chaining 方法鏈(流模式)
-
Fluent Style 流暢風格
-
Builder 模式構建器
-
-
Nested Functions 巢狀函式
-
Lambda Expressions/Closures
-
Functional Sequence
-
-
-
JobDetail--->需要處理的JOB
-
Job--->執行邏輯
已經整合到了Sprint裡面
下載Quartz
-
-
解壓
-
IDEA中匯入該jar包
-
File--->Project Structure--->選擇該專案--->點選專案左上角"+"號--->選擇"JAR or directories"--->找到解壓路徑下的lib目錄下的檔案--->選擇OK
-
該框架需要有log4j.xml作為資料傳輸格式
例項demo
package thread.quartz;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
import java.util.Date;
import static org.quartz.DateBuilder.evenMinuteDate;
import static org.quartz.DateBuilder.evenSecondDateAfterNow;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;
/**
* Quartz Introduction to learning
* @since JDK 1.8
* @date 2021/6/22
* @author Lucifer
*/
public class QuartzTestNo2 {
public void run() throws Exception {
// 由於排程器來自於排程器工廠--->建立Scheduler的工廠
SchedulerFactory sf = new StdSchedulerFactory();
// 從工廠中獲取排程器--->初始化完畢
Scheduler sched = sf.getScheduler();
// 建立JobDetail
JobDetail job = newJob(QuartzTestNo1.class).withIdentity("job1", "group1").build();
// 時間
// Date runTime = evenMinuteDate(new Date()); //這是一個靜態方法,有分鐘和秒
Date runTime = evenSecondDateAfterNow();
// 觸發條件
Trigger trigger = newTrigger().withIdentity("trigger1", "group1").startAt(runTime).build();
// 註冊任務和觸發條件
sched.scheduleJob(job, trigger);
// 開始呼叫--->啟動
sched.start(); //一看到start方法就知道是多執行緒
try {
// 5s後停止執行緒
Thread.sleep(5L * 1000L);
// executing...
} catch (Exception e) {
//
}
}
public static void main(String[] args) throws Exception {
SimpleExample example = new SimpleExample();
example.run();
}
}