Quartz——定时任务
Posted popcorn丫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Quartz——定时任务相关的知识,希望对你有一定的参考价值。
Quartz之前版本的使用:http://blog.csdn.net/huihuimimi17/article/details/8215779
2之后的版本使用:简单使用
package com.bxw; import java.util.Date; import org.quartz.DateBuilder; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.SimpleScheduleBuilder; import org.quartz.Trigger; import org.quartz.TriggerBuilder; import org.quartz.impl.StdSchedulerFactory; public class Demo1Test { public void run() throws SchedulerException{ System.out.println("---初始化ing---"); //通过SchedulerFactory工厂类获取Scheduler SchedulerFactory sf = new StdSchedulerFactory(); System.out.println("---初始化完成---"); //任务执行时间 // Date runTime = DateBuilder.evenMinuteDate(new Date()); Date runTime = DateBuilder.evenSecondDateAfterNow(); System.out.println("---将job加入Scheduler中---"); //用于描叙Job实现类及其他的一些静态信息,构建一个作业实例 JobDetail jd = JobBuilder.newJob(Demo1.class).withIdentity("testDemo1","group1").build(); //描叙触发Job执行的时间触发规则,Trigger实例化一个触发器 Trigger trigger = TriggerBuilder.newTrigger()//创建一个新的TriggerBuilder来规范一个触发器 .withIdentity("trigger1","group1")//给触发器起一个名字和组名 //.startNow()//立即执行 .startAt(runTime)//设置触发时间 .withSchedule( SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(2)//时间间隔 //.withRepeatCount(5)//重复次数,将执行6次 ).build();//产生触发器 //运行容器,使用SchedulerFactory创建Scheduler实例 Scheduler sched = sf.getScheduler(); //向scheduler添加一个job和trigger sched.scheduleJob(jd,trigger); System.out.println(jd.getKey()+"运行在:"+runTime); sched.start(); } public static void main(String[] args) throws SchedulerException { Demo1Test dt = new Demo1Test(); dt.run(); } }
步骤:1.得到一个Sceduler 2.新建一个作业 3.新建一个触发器 4.想Scheduler添加作业和触发器 5.sceduler.start()
工具类:
package com.bxw; import org.quartz.Job; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.SimpleScheduleBuilder; import org.quartz.Trigger; import org.quartz.TriggerBuilder; import org.quartz.impl.StdSchedulerFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 任务调度公共类 * @remark * @author feizi * @time 2015-3-23下午3:04:12 */ public class QuartzUtil { private final static String JOB_GROUP_NAME = "QUARTZ_JOBGROUP_NAME";//任务组 private final static String TRIGGER_GROUP_NAME = "QUARTZ_TRIGGERGROUP_NAME";//触发器组 private static Logger log = LoggerFactory.getLogger(QuartzUtil.class);//日志 /** * 添加任务的方法 * @param jobName 任务名 * @param triggerName 触发器名 * @param jobClass 执行任务的类 * @param seconds 间隔时间 * @throws SchedulerException */ public static void addJob(String jobName,String triggerName,Class<? extends Job> jobClass,int seconds) throws SchedulerException{ log.info("==================initialization================="); //创建一个SchedulerFactory工厂实例 SchedulerFactory sf = new StdSchedulerFactory(); //通过SchedulerFactory构建Scheduler对象 Scheduler sche = sf.getScheduler(); log.info("===================initialize finshed==================="); log.info("==============add the Job to Scheduler=================="); //用于描叙Job实现类及其他的一些静态信息,构建一个作业实例 JobDetail jobDetail = JobBuilder.newJob(jobClass) .withIdentity(jobName, JOB_GROUP_NAME) .build(); //构建一个触发器,规定触发的规则 Trigger trigger = TriggerBuilder.newTrigger()//创建一个新的TriggerBuilder来规范一个触发器 .withIdentity(triggerName, TRIGGER_GROUP_NAME)//给触发器起一个名字和组名 .startNow()//立即执行 .withSchedule( SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(seconds)//时间间隔 单位:秒 .repeatForever()//一直执行 ) .build();//产生触发器 //向Scheduler中添加job任务和trigger触发器 sche.scheduleJob(jobDetail, trigger); //启动 sche.start(); } /** * 测试 * @param args * @throws SchedulerException */ public static void main(String[] args) throws SchedulerException { QuartzUtil.addJob("任务一", "触发器一", Demo1.class, 2); QuartzUtil.addJob("任务二", "触发器二", Demo2.class, 4); } }
以上是关于Quartz——定时任务的主要内容,如果未能解决你的问题,请参考以下文章