这几天公司正好有空就系统的学习了下quartz,quartz对任务调度的领域问题进行了高度抽象,提出了调度器,任务和触发器这三个核心的概念。其中最简单的周期时间间隔调度:
先建立一个job类
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class SimpleJob implements Job{
@Override
public void execute(JobExecutionContext jj) throws JobExecutionException {
System.out.println(jj.getTrigger().getName()+" triggerd.time is: "+(new Date()));
}
}
再创建一个触发器类
import java.util.Date;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;
import com.anchora.test.job.SimpleJob;
public class SimpleTriggerRunner {
public static void main(String[] args) {
try{
JobDetail jobDetail=new JobDetail("job1", "jgroup1", SimpleJob.class); //创建一个jobdetail实例
SimpleTrigger simpleTrigger=new SimpleTrigger("trigger1", "tgroup1"); //触发器规则
simpleTrigger.setStartTime(new Date());
simpleTrigger.setRepeatInterval(2000);
simpleTrigger.setRepeatCount(100);
SchedulerFactory schedulerFactory=new StdSchedulerFactory();
Scheduler scheduler=schedulerFactory.getScheduler();
scheduler.scheduleJob(jobDetail, simpleTrigger); //注册并进行调度
scheduler.start();
}catch(Exception e){
e.printStackTrace();
}
}
}
稍微复杂一点的调度:crontrigger比simpletrigger更有具体实际意义的调度方案,调度规则基于cron表达式,支持日历相关的重复时间间隔
import java.util.Date;
import org.quartz.CronExpression;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;
import com.anchora.test.job.SimpleJob;
public class CronTriggerRunner {
public static void main(String[] args) {
try{
JobDetail jobDetail=new JobDetail("job2", "jgroup2", SimpleJob.class);
CronTrigger cronTrigger=new CronTrigger("trigger2", "tgroup2");
CronExpression cexp=new CronExpression("0/5 * * * * ?");
cronTrigger.setCronExpression(cexp);
SchedulerFactory schedulerFactory=new StdSchedulerFactory();
Scheduler scheduler=schedulerFactory.getScheduler();
scheduler.scheduleJob(jobDetail, cronTrigger);
scheduler.start();
}catch(Exception e){
e.printStackTrace();
}
}
}
如果想要跟spring结合起来,参考spring文档