quartz 2.2.1动态时间配置

做了一个quart测试
main:

public class QuartzMain {


    public static void main(String[] args) throws SchedulerException {
        JobDetail testJobDetail=JobBuilder
                                .newJob(TestJob.class)
                                .withIdentity("myTestJob", "myGroup")
                                .build();
        CronScheduleBuilder cronScheduleBuilder=CronScheduleBuilder.cronSchedule("0/5 * * * * ?");
        Trigger trigger=TriggerBuilder.newTrigger()
                .withIdentity("myTrigger", "myGroup")
                .withSchedule(cronScheduleBuilder)

                .build();


        Scheduler scheduler=StdSchedulerFactory.getDefaultScheduler();
        scheduler.scheduleJob(testJobDetail, trigger);
        scheduler.start();
        System.err.println(scheduler.toString());
    }

}  

TestJob.class

public class TestJob extends BaseJob {

    private Logger logger=Logger.getLogger(TestJob.class);
    private DateFormat  formate=new SimpleDateFormat("HH:mm:ss");

    @Override
    protected void invoke(Scheduler scheduler, Trigger trigger) {
        logger.info("dateTime:==>"+formate.format(new Date()));

    }

}

BaseJob.java

public abstract class BaseJob implements Job {

    /* (non-Javadoc)
     * @see org.quartz.Job#execute(org.quartz.JobExecutionContext)
     */
    public final void execute(JobExecutionContext context)
            throws JobExecutionException {
        //context.get
        invoke(context.getScheduler(),context.getTrigger());
        refresh(context.getScheduler(),context.getTrigger());
    }

    private void refresh(Scheduler scheduler,Trigger trigger){
        try {
            CronTriggerImpl triggerImpl=(CronTriggerImpl)trigger; 
            triggerImpl.setCronExpression("0/8 * * * * ?");
            scheduler.rescheduleJob(trigger.getKey(), triggerImpl);  

        } catch (Exception e) {
            e.printStackTrace();
        }


    }

    protected abstract void invoke(Scheduler scheduler,Trigger trigger);

}

刚开始,我是让他执行完,就重置trigger执行时间
我发现根本就不能重置trigger执行时间,反而变的更快了:
15:43:35,040 INFO TestJob:27 - dateTime:==>15:43:35
15:43:40,002 INFO TestJob:27 - dateTime:==>15:43:40
15:43:40,003 INFO TestJob:27 - dateTime:==>15:43:40
15:43:40,005 INFO TestJob:27 - dateTime:==>15:43:40
15:43:40,008 INFO TestJob:27 - dateTime:==>15:43:40
15:43:40,010 INFO TestJob:27 - dateTime:==>15:43:40
15:43:40,011 INFO TestJob:27 - dateTime:==>15:43:40
15:43:40,013 INFO TestJob:27 - dateTime:==>15:43:40
15:43:40,015 INFO TestJob:27 - dateTime:==>15:43:40
15:43:40,016 INFO TestJob:27 - dateTime:==>15:43:40
15:43:40,017 INFO TestJob:27 - dateTime:==>15:43:40
15:43:40,019 INFO TestJob:27 - dateTime:==>15:43:40
.
.
.

.

后来我这样做:把这个重置trigger时间的代码放在main方法里面可以实现:

    public static void main(String[] args) throws SchedulerException, ParseException {
        JobDetail testJobDetail=JobBuilder
                                .newJob(TestJob.class)
                                .withIdentity("myTestJob", "myGroup")
                                .build();
        CronScheduleBuilder cronScheduleBuilder=CronScheduleBuilder.cronSchedule("0/5 * * * * ?");
        Trigger trigger=TriggerBuilder.newTrigger()
                .withIdentity("myTrigger", "myGroup")
                .withSchedule(cronScheduleBuilder)

                .build();


        Scheduler scheduler=StdSchedulerFactory.getDefaultScheduler();
        scheduler.scheduleJob(testJobDetail, trigger);
        scheduler.start();
        CronTriggerImpl triggerImpl=(CronTriggerImpl)trigger; 
        triggerImpl.setCronExpression("0/8 * * * * ?");
        scheduler.rescheduleJob(trigger.getKey(), triggerImpl);  
        System.err.println(scheduler);
    }

15:45:48,039 INFO TestJob:27 - dateTime:==>15:45:48
15:45:56,000 INFO TestJob:27 - dateTime:==>15:45:56
15:46:00,001 INFO TestJob:27 - dateTime:==>15:46:00
15:46:08,001 INFO TestJob:27 - dateTime:==>15:46:08
15:46:16,000 INFO TestJob:27 - dateTime:==>15:46:16
.
.
.
.
.如果我想执行一次重置一下执行时间,该怎么做?