Quartz定時任務框架(一) 入門案例
介紹
Quartz是一套支援時間排程的框架,官網http://www.quartz-scheduler.org/, jar 包下載,點這裡
入門案例
1. quartz.properties檔案
這個檔案不是必須建立的,如果需要建立使用,必須建立在calsspath下面,對於web工程,編譯後放到WEB-INF/classes下面
#定義scheduler的名稱
org.quartz.scheduler.instanceName = MyScheduler
#定義quartz的執行緒池中最大的執行緒數量,意味著最多能有幾個job同時執行
org.quartz.threadPool.threadCount = 3
#所有scheduler的資料都是放在記憶體中的,這個類是官網建議的類用來儲存資料,給配置上
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
2. 簡單案例
public static void main(String[] args) throws InterruptedException {
try {
//從排程程式工廠獲取一個排程程式的例項
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
//輸出從quartz.properties檔案中設定的排程程式的名稱
System.out.println("自定義的排程程式的名稱:"+scheduler.getSchedulerName());
//........ 加入具體的定時任務
scheduler.start();//啟動scheduler,將啟動具體的job
scheduler.shutdown();//關閉scheduler,將job執行緒停止
} catch (SchedulerException se) {
se.printStackTrace();
}
}
2. 定義具體的任務
* 定義一個類實現job介面,在execute方法內,執行任務的具體內容
這個類必須是public,否則將會拋異常:
Class org.quartz.simpl.SimpleJobFactory can not access a member of class com.jiaoyiping.stuty_quartz.SimpleJob2 with modifiers ""
package cn.bing.quartz;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class HelloJob implements Job{
@Override
public void execute(JobExecutionContext paramJobExecutionContext)
throws JobExecutionException {
System.err.println("["+Thread.currentThread().getName()+"]"+"Hello World! MyJob is executing.");
}
}
* 將job配置進去schelar並且設定任務的執行時間間隔
// 定義一個job並且繫結到HelloJob上,這裡並不會馬上建立hellojob例項,在scheduler排程執行任務時候建立
JobDetail job = JobBuilder.newJob (HelloJob.class).withIdentity("job1", "group1")
.build();
//配置任務是馬上執行的,並且是1秒執行一次
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(1)
.repeatForever())
.build();
//將任務的配置應用到job上
scheduler.scheduleJob(job, trigger);
完整的程式碼
package cn.bing.quartz;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
public class Myquartz {
public static void main(String[] args) throws InterruptedException {
try {
//從排程程式工廠獲取一個排程程式的例項
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
//輸出從quartz.properties檔案中設定的排程程式的名稱
System.out.println("自定義的排程程式的名稱:"+scheduler.getSchedulerName());
// 定義一個job並且繫結到HelloJob上,這裡並不會馬上建立hellojob例項,在scheduler排程執行任務時候建立
JobDetail job = JobBuilder.newJob (HelloJob.class).withIdentity("job1", "group1")
.build();
//配置任務是馬上執行的,並且是1秒執行一次
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(1)
.repeatForever())
.build();
//將任務的配置應用到job上
scheduler.scheduleJob(job, trigger);
scheduler.start();//啟動任務
//為了排程的任務執行緒執行,需要休眠一段時間,才呼叫shutdown方法關閉排程執行緒
//或者不呼叫shutdown方法
Thread.sleep(10000);
scheduler.shutdown();//停止任務
} catch (SchedulerException se) {
se.printStackTrace();
}
}
}
列印日誌:
[MyScheduler_Worker-1]Hello World! MyJob is executing.
[MyScheduler_Worker-2]Hello World! MyJob is executing.
[MyScheduler_Worker-3]Hello World! MyJob is executing.
[MyScheduler_Worker-1]Hello World! MyJob is executing.
[MyScheduler_Worker-2]Hello World! MyJob is executing.
[MyScheduler_Worker-3]Hello World! MyJob is executing.
[MyScheduler_Worker-1]Hello World! MyJob is executing.
[MyScheduler_Worker-2]Hello World! MyJob is executing.
[MyScheduler_Worker-3]Hello World! MyJob is executing.
[MyScheduler_Worker-1]Hello World! MyJob is executing.
[MyScheduler_Worker-2]Hello World! MyJob is executing.
相關文章
- Quartz定時任務框架(二) Quartz詳解quartz框架
- 任務排程框架Quartz快速入門!框架quartz
- 一文快速入門任務排程框架-Quartz框架quartz
- 石英定時任務-quartzquartz
- 簡單說說Java 定時任務框架---QuartzJava框架quartz
- quartz定時任務時間設定quartz
- Quartz 定時任務管理類quartz
- java Quartz 定時任務管理類Javaquartz
- Spring Scheduler定時任務 + QuartzSpringquartz
- Quartz任務排程快速入門quartz
- Spring Boot 配置 Quartz 定時任務Spring Bootquartz
- Quartz高可用定時任務快速上手quartz
- 普通web整合quartz跑定時任務Webquartz
- Quartz實現動態定時任務quartz
- 一看便知spring+quartz定時任務Springquartz
- [原始碼分析] 定時任務排程框架 Quartz 之 故障切換原始碼框架quartz
- 淺談分散式定時任務之quartz分散式quartz
- springboot Quartz 定時任務工具類Spring Bootquartz
- Spring+quartz 實現定時任務Springquartz
- Quartz - Spring整合Quartz實現叢集的定時任務quartzSpring
- spring2.0 quartz 靜態定時任務Springquartz
- quartz學習-quartz編碼方式實現定時任務簡例quartz
- java 定時任務 quartz 時間表示式Cron總結Javaquartz
- Grails整合Quartz外掛實現定時任務(Job)AIquartz
- 使用Spring整合Quartz輕鬆完成定時任務Springquartz
- Spring 整合 Quartz 實現動態定時任務Springquartz
- NET作業排程(定時任務)-Quartz.Netquartz
- laravel框架任務排程(定時執行任務)Laravel框架
- 【1】基於quartz框架和Zookeeper實現叢集化定時任務系統quartz框架
- 定時任務框架學習心得框架
- Linux定時任務系統 Cron 入門(轉)Linux
- 初識spring與quartz整合實現定時任務Springquartz
- 震驚!Windows Service服務和定時任務框架quartz之間原來是這種關係……Windows框架quartz
- 山寨版Quartz.Net任務統一排程框架quartz框架
- Spring+quartz實現動態化定時任務 (轉)Springquartz
- springboot整合Quartz實現動態配置定時任務Spring Bootquartz
- 如何設定一個定時任務?
- Spring Boot整合quartz實現定時任務並支援切換任務資料來源Spring Bootquartz