Quartz使用 在程序中启停定时器
来源:互联网 发布:儿童发音矫正软件 编辑:程序博客网 时间:2024/05/19 01:11
转自: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 block
- e.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 block
- e.printStackTrace();
- } catch (SchedulerException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (ParseException e) {
- // TODO Auto-generated catch block
- e.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{
- @Override
- public void execute(JobExecutionContext arg0) throws JobExecutionException {
- // TODO Auto-generated method stub
- System.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)的使用
- [转]inotify -- Linux 2.6 内核中…
- 《一升的眼泪》日语台词
- Qt Style Sheet自定义QSlider
- UIViewAnimation动画与CATransition类动画
- c语言工具宏(调试信息)
- Quartz使用 在程序中启停定时器
- [转] Android开发环境搭建全程演示…
- Android SDK & Android NDK 官方下…
- QImage实现图片间渐变切换
- [转]Qt-Embedded 4 install
- sourceinsight常用宏
- [摘]gdb查看QString类型变量
- [转]无线网络
- Qt屏幕截屏