任務類
package org.quartz.examples.example1; import java.util.Date; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; /** * 定時任務執行Job類,需繼承Job父類 */ public class HelloJob implements Job { private static Logger LOG = LoggerFactory.getLogger(HelloJob.class); //必須要有public修飾的無參構造函數 public HelloJob() { } //一個簡單任務,執行的時候打印一句“Hello World! - ” public void execute(JobExecutionContext context) throws JobExecutionException { LOG.info("Hello World! - " + new Date()); } }
調度管理類
package org.quartz.examples.example1; import static org.quartz.DateBuilder.evenMinuteDate; import static org.quartz.JobBuilder.newJob; import static org.quartz.TriggerBuilder.newTrigger; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerFactory; import org.quartz.Trigger; import org.quartz.impl.StdSchedulerFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Date; /** * 這個示例將演示如何啟動和關閉Quartz調度器,以及如何調度要在Quartz中運行的作業。 */ public class SimpleExample { Logger LOG = LoggerFactory.getLogger(SimpleExample.class); public void run() throws Exception { // 初始化一個調度工廠,並實例化一個調度類 SchedulerFactory schedulerFactory = new StdSchedulerFactory(); Scheduler scheduler = schedulerFactory.getScheduler(); // 定義一個開始運行時間:下一分鍾 Date runTime = evenMinuteDate(new Date()); // 定義一個Job類,命名為job1,並綁定到一個名為group1的組中 JobDetail job = newJob(HelloJob.class).withIdentity("job1", "group1").build(); // 實例化一個觸發器,命名為trigger1,並綁定到一個名為group1的組中,Job類運行開始時間為runTime(下一分鍾) Trigger trigger = newTrigger().withIdentity("trigger1", "group1").startAt(runTime).build(); // 告訴quartz使用我們的觸發器來調度任務 scheduler.scheduleJob(job, trigger); LOG.info(job.getKey() + " will run at: " + runTime); // 啟動調度器(在調度器啟動之前,實際上什么都不能運行) scheduler.start(); // 等待的時間足夠長,使調度程序有機會運行完畢Job作業! try { Thread.sleep(65L * 1000L); } catch (Exception e) { }
/**
* 終止調度。
* 但是如果當前仍然有任務正在運行中,則會等待該任務執行完畢再終止,期間debug信息會打印:
* 21:48:54.965 [main] DEBUG org.quartz.simpl.SimpleThreadPool - Waiting for thread TestScheduler_Worker-1 to shut down
*/
scheduler.shutdown(true);
} public static void main(String[] args) throws Exception { SimpleExample example = new SimpleExample(); example.run(); } }