前段時間有位朋友問了我Quartz的使用,因而嘗試些了個簡單的例子向解釋Quartz的使用java
Quartz的一些基本使用express
package com.quartz; import static org.quartz.CronScheduleBuilder.cronSchedule; import static org.quartz.JobBuilder.newJob; import static org.quartz.TriggerBuilder.newTrigger; import org.quartz.Job; import org.quartz.JobDetail; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.Scheduler; import org.quartz.SchedulerContext; import org.quartz.SchedulerException; import org.quartz.Trigger; import org.quartz.TriggerKey; import org.quartz.impl.StdSchedulerFactory; public class ActionJob implements Job { public static void main(String[] args) { try { StdSchedulerFactory factory = new StdSchedulerFactory(); Scheduler scheduler = factory.getScheduler(); SchedulerContext context = scheduler.getContext(); context.put("args", "args[0]"); String expression = "00 26 15 ? * MON"; JobDetail detail = newJob(ActionJob.class) .withIdentity("detail_name", "detail_group").build(); Trigger trigger = newTrigger() .withIdentity("trigger_name", "trigger_group") .withSchedule(cronSchedule(expression)).build(); scheduler.scheduleJob(detail, trigger); scheduler.start(); } catch (Exception e) { e.printStackTrace(); } } @Override public void execute(JobExecutionContext context) throws JobExecutionException { Scheduler scheduler = context.getScheduler(); TriggerKey triggerKey = context.getTrigger().getKey(); try { System.out.println("外部參數:" + scheduler.getContext().getString("args")); // scheduler.pauseTrigger(triggerKey);執行任務前暫停這個任務,按需使用 String path = "com.quartz.Task"; //加載任務類 Class<?> clas = Class.forName(path); Object o = clas.newInstance();//實例化已任務類對象 //獲取啓動方法,並啓動 clas.getMethod("execute", Config.class).invoke(o, new Config()); } catch (Exception e) { e.printStackTrace(); } // finally { // try { // scheduler.resumeTrigger(triggerKey); // } catch (SchedulerException e) { // e.printStackTrace(); // } // } //無論任務是否成功,始終都解除這個任務。按需使用 } }
任務類ide
package com.quartz; public class Task { public void execute(Config config) { //執行任務 System.out.println("just " + config.name); } }
任務所需配置類測試
package com.quartz; public class Config { public String name = "test"; }
測試輸出ui
外部參數:args[0] just test