前段时间有位朋友问了我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