Quartz使用 在程序中启停定时器
来源:互联网 发布:成捷迅概预算软件价格 编辑:程序博客网 时间:2024/06/06 00:30
转自:http://www.blogjava.net/fatbear/archive/2008/10/08/233158.html
新需求:用程序实现定时器的停、起。下面有个例子
但是在我的项目中Quartz版本是用maven下的新版本,发现先前的例子中的方法不能直接用了,下面是之后有做的修改的:
如果用的quartz版本是2.2.X 最新的需要做如下修改:
因为新版本把好多类变成了接口,不能直接实例化,需要借助其他的类来实例化;如下:
@Controller@RequestMapping(value = "/etos2/bss")public class BillJobStart {@RequestMapping(value = "/billJobStart")public void jobStart() {addJob(BillJobConstant.JOB_NAME,"0/2 * * * * ?");}public static void addJob(String jobName,String time){ try {Scheduler sched = BillJobConstant.sf.getScheduler();JobDetail jobDetail = JobBuilder.newJob(JobT.class).withIdentity(jobName, BillJobConstant.JOB_GROUP_NAME).build();CronExpression cronExpression =new CronExpression(time);CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(BillJobConstant.TRIGGER_GROUP_NAME).withSchedule(CronScheduleBuilder.cronSchedule(cronExpression)).build();sched.scheduleJob(jobDetail,trigger); //启动 if(!sched.isShutdown()) sched.start();} catch (SchedulerException e) {e.printStackTrace();} catch (ParseException e) {e.printStackTrace();} }public static void modifyTime(String time){try {Scheduler sched = BillJobConstant.sf.getScheduler();TriggerKey key = new TriggerKey( BillJobConstant.TRIGGER_GROUP_NAME);CronExpression cronExpression =new CronExpression(time);Trigger trigger = sched.getTrigger(key);CronTrigger cron = (CronTrigger)trigger;cron.getTriggerBuilder().withIdentity(BillJobConstant.TRIGGER_GROUP_NAME).withSchedule(CronScheduleBuilder.cronSchedule(cronExpression)).build();sched.resumeTrigger(key);} catch (SchedulerException e) {e.printStackTrace();} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void stopJob()throws SchedulerException, ParseException{ Scheduler sched = BillJobConstant.sf.getScheduler();TriggerKey key = new TriggerKey( BillJobConstant.TRIGGER_GROUP_NAME);sched.pauseTrigger(key);//停止触发器} public static void main(String[] args) {try {addJob(BillJobConstant.JOB_NAME,"0/5 * * * * ?");Thread.sleep(10000); stopJob();Thread.sleep(10000); modifyTime("0/1 * * * * ?");} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SchedulerException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
package wf.job;import java.text.ParseException;import org.quartz.CronTrigger;import org.quartz.Job;import org.quartz.JobDetail;import org.quartz.Scheduler;import org.quartz.SchedulerException;import org.quartz.SchedulerFactory;import org.quartz.Trigger;import org.quartz.impl.StdSchedulerFactory;public class QuartzManager {private static SchedulerFactory sf = new StdSchedulerFactory(); private static String JOB_GROUP_NAME = "group1"; private static String TRIGGER_GROUP_NAME = "trigger1"; /** *//** * 添加一个定时任务,使用默认的任务组名,触发器名,触发器组名 * @param jobName 任务名 * @param job 任务 * @param time 时间设置,参考quartz说明文档 * @throws SchedulerException * @throws ParseException */ public static void addJob(String jobName,Job job,String time) throws SchedulerException, ParseException{ Scheduler sched = sf.getScheduler(); JobDetail jobDetail = new JobDetail(jobName, JOB_GROUP_NAME, job.getClass());//任务名,任务组,任务执行类 //触发器 CronTrigger trigger = new CronTrigger(jobName, TRIGGER_GROUP_NAME);//触发器名,触发器组 trigger.setCronExpression(time);//触发器时间设定 sched.scheduleJob(jobDetail,trigger); //启动 if(!sched.isShutdown()) sched.start(); } /** *//** * 添加一个定时任务 * @param jobName 任务名 * @param jobGroupName 任务组名 * @param triggerName 触发器名 * @param triggerGroupName 触发器组名 * @param job 任务 * @param time 时间设置,参考quartz说明文档 * @throws SchedulerException * @throws ParseException */ public static void addJob(String jobName,String jobGroupName, String triggerName,String triggerGroupName, Job job,String time) throws SchedulerException, ParseException{ Scheduler sched = sf.getScheduler(); JobDetail jobDetail = new JobDetail(jobName, jobGroupName, job.getClass());//任务名,任务组,任务执行类 //触发器 CronTrigger trigger = new CronTrigger(triggerName, triggerGroupName);//触发器名,触发器组 trigger.setCronExpression(time);//触发器时间设定 sched.scheduleJob(jobDetail,trigger); if(!sched.isShutdown()) sched.start(); } /** *//** * 修改一个任务的触发时间(使用默认的任务组名,触发器名,触发器组名) * @param jobName * @param time * @throws SchedulerException * @throws ParseException */ public static void modifyJobTime(String jobName,String time) throws SchedulerException, ParseException{ Scheduler sched = sf.getScheduler(); Trigger trigger = sched.getTrigger(jobName,TRIGGER_GROUP_NAME); if(trigger != null){ CronTrigger ct = (CronTrigger)trigger; ct.setCronExpression(time); sched.resumeTrigger(jobName,TRIGGER_GROUP_NAME); } } /** *//** * 修改一个任务的触发时间 * @param triggerName * @param triggerGroupName * @param time * @throws SchedulerException * @throws ParseException */ public static void modifyJobTime(String triggerName,String triggerGroupName, String time) throws SchedulerException, ParseException{ Scheduler sched = sf.getScheduler(); Trigger trigger = sched.getTrigger(triggerName,triggerGroupName); if(trigger != null){ CronTrigger ct = (CronTrigger)trigger; //修改时间 ct.setCronExpression(time); //重启触发器 sched.resumeTrigger(triggerName,triggerGroupName); } } /** *//** * 移除一个任务(使用默认的任务组名,触发器名,触发器组名) * @param jobName * @throws SchedulerException */ public static void removeJob(String jobName) throws SchedulerException{ Scheduler sched = sf.getScheduler(); sched.pauseTrigger(jobName,TRIGGER_GROUP_NAME);//停止触发器 sched.unscheduleJob(jobName,TRIGGER_GROUP_NAME);//移除触发器 sched.deleteJob(jobName,JOB_GROUP_NAME);//删除任务 } /** *//** * 移除一个任务 * @param jobName * @param jobGroupName * @param triggerName * @param triggerGroupName * @throws SchedulerException */ public static void removeJob(String jobName,String jobGroupName, String triggerName,String triggerGroupName) throws SchedulerException{ Scheduler sched = sf.getScheduler(); sched.pauseTrigger(triggerName,triggerGroupName);//停止触发器 sched.unscheduleJob(triggerName,triggerGroupName);//移除触发器 sched.deleteJob(jobName,jobGroupName);//删除任务 } }
public class QuartzTest {/** *//** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub TestJob job = new TestJob(); String job_name ="11"; try { System.out.println("【系统启动】"); QuartzManager.addJob(job_name,job,"0/5 * * * * ?"); Thread.sleep(10000); System.out.println("【修改时间】"); QuartzManager.modifyJobTime(job_name,"0/10 * * * * ?"); Thread.sleep(20000); System.out.println("【移除定时】"); QuartzManager.removeJob(job_name); Thread.sleep(10000); System.out.println("/n 【添加定时任务】"); QuartzManager.addJob(job_name,job,"0/5 * * * * ?"); } catch (Exception e) { e.printStackTrace(); } }}
public class TestJob implements Job{@Overridepublic void execute(JobExecutionContext arg0) throws JobExecutionException {// TODO Auto-generated method stubSystem.out.println("★★★★★★★★★★★");}}
0 0
- Quartz使用 在程序中启停定时器
- Quartz使用 在程序中启停定时器
- 定时器Quartz在Spring中的使用
- quartz定时器在运营商的使用
- quartz定时器的使用
- 2013-Quartz定时器使用
- Quartz定时器使用
- java 定时器quartz使用
- Quartz定时器的使用
- 定时器Quartz的使用
- 使用Quartz做定时器
- Quartz定时器使用示例
- [整理]在 Web App 中使用 Quartz 替换 Java 定时器
- Spring+Quartz定时器的使用
- java 定时器 quartz的使用
- spring 中使用Quartz 定时器
- quartz(定时器)的使用
- 定时器(quartz)的使用
- Html中td自动换行问题
- svn url does not contain valid patch
- 什么叫别让孩子输在起跑线上?! - 电子产品已成儿童“多动症”诱因
- Remove Duplicates from Sorted Array II - LeetCode
- 行业应用也在不断诞生
- Quartz使用 在程序中启停定时器
- Java Stream Closed异常
- C#统计文章中单词的重复次数,并且按照次数从高到低排序返回(无法处理中文)
- Android_HttpClient
- UVALive 3211 Now or later(二份答案+2-SAT)
- 怎么样将mac中的pdf倒入ipad中,方便我们查看
- Jos - lab1 Boot the PC
- 查询windows系统产品密钥
- sqlserver中各个字段类型详解