日期:2014-05-18  浏览次数:20730 次

quartz 暂停后启动问题
本帖最后由 suijiarui 于 2012-08-11 01:32:55 编辑
近日由于项目需要用到quartz组件实现调度管理功能,想要实现调度的启动和暂停以及恢复功能,但是暂停遇到问题
暂停后重新启动,会连续多次调用job中的execute方法。如果当前工作的处理时间过长必然会导致问题。代码如下,急求帮助

import java.util.Date;

import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;

public class TestTwo {

/**
 * @param args
 */
public static void main(String[] args) {

try {
SchedulerFactory sf = new StdSchedulerFactory(); 
Scheduler sched = sf.getScheduler();

 JobDetail job = new JobDetail();
 job.setJobClass(HelloJob.class);
 job.setGroup("jobgourp");
 job.setName("jobname");

 SimpleTrigger striger=new SimpleTrigger();
 striger.setName("strigername");
 striger.setStartTime(new Date());
 striger.setRepeatInterval(1000);
 striger.setRepeatCount(-1);
 
 striger.setJobName("jobname");
 striger.setJobGroup("jobgourp");
 
 sched.scheduleJob(job, striger);
 sched.start();
 //-------------------------------------------------------
 Thread.sleep(4000);
 System.out.println("暂停");
 
 sched.pauseJobGroup("jobgourp");
 sched.pauseTriggerGroup("jobgourp");
 Thread.sleep(5000);
 System.out.println("暂停结束");
 
 sched.resumeJobGroup("jobgourp");
 sched.resumeTriggerGroup("jobgourp");
 sched.start();
 
 Thread.sleep(4800);
 sched.shutdown(true);
} catch (SchedulerException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();

}

}

job 类代码如下
package com.scy.quartz.test;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class HelloJob implements Job {

@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println("HelloJob 执行了"+new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date()));

}

}

HelloJob 执行了2012-08-11 12:57:16
HelloJob 执行了2012-08-11 12:57:17
HelloJob 执行了2012-08-11 12:57:18
HelloJob 执行了2012-08-11 12:57:19
暂停
暂停结束
----------????-----------
HelloJob 执行了2012-08-11 12:57:25
HelloJob 执行了2012-08-11 12:57:25
HelloJob 执行了2012-08-11 12:57:25
HelloJob 执行了2012-08-11 12:57:25
HelloJob 执行了2012-08-11 12:57:25
HelloJob 执行了2012-08-11 12:57:25
----------????-----------
HelloJob 执行了2012-08-11 12:57:26
HelloJob 执行了2012-08-11 12:57:27
HelloJob 执行了2012-08-11 12:57:28
HelloJob 执行了2012-08-11 12:57:29