Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何限制在quartz scheduler中触发时仅执行一次作业的cron触发器_Java_Quartz Scheduler_Crontrigger - Fatal编程技术网

Java 如何限制在quartz scheduler中触发时仅执行一次作业的cron触发器

Java 如何限制在quartz scheduler中触发时仅执行一次作业的cron触发器,java,quartz-scheduler,crontrigger,Java,Quartz Scheduler,Crontrigger,在我的quartz调度器中,当cron触发器每20秒触发一次firedin时,我的主类会执行5到6次。我想限制在cron触发器每20秒触发一次时,只执行一次主类 这是我的触发器 SchedulerFactory sf = new StdSchedulerFactory(); Scheduler scheduler = sf.getScheduler(); JobDetail job = JobBuilder.newJob(Main.class).build(); Date startTime =

在我的quartz调度器中,当cron触发器每20秒触发一次firedin时,我的主类会执行5到6次。我想限制在cron触发器每20秒触发一次时,只执行一次主类

这是我的触发器

SchedulerFactory sf = new StdSchedulerFactory();
Scheduler scheduler = sf.getScheduler();
JobDetail job = JobBuilder.newJob(Main.class).build();
Date startTime = DateBuilder.nextGivenSecondDate(null, 10);
// run every 20 seconds infinite loop
CronTrigger crontrigger = TriggerBuilder.newTrigger().startAt(startTime).withSchedule(CronScheduleBuilder.cronSchedule("0/20 * * * * ?")).build();
scheduler.start();
scheduler.scheduleJob(job, crontrigger);
这是主类方法

主类 我的实际产出是

触发器1-当cron第一次触发时,它将执行3或4次

触发器启动

触发器启动

触发器启动

触发器2-当cron第二次触发时,它将执行6或7次

触发器启动

触发器启动

触发器启动

触发器启动

触发器启动

触发器启动

触发器启动

触发器启动

这个主类被称为6或7次。我想限制这种情况

我的预期产出是

触发器1(前20秒) 触发器启动

触发器2(下一个20秒) 触发器启动


它应该在我的系统上执行一次,我对它进行了测试,它工作得非常好。您可以使用以下模板,并请分享它的输出和一些有关记录器的信息(如果使用)

工作:

这是我的克朗触发器:

SchedulerFactory sf = new StdSchedulerFactory();
    Scheduler scheduler = sf.getScheduler();
    JobDetail job = JobBuilder.newJob(HelloJob.class).build();
    // run every 20 seconds infinite loop
    CronTrigger crontrigger = TriggerBuilder.newTrigger().withSchedule(
            CronScheduleBuilder.cronSchedule("0/20 * * * * ?")).build();
    scheduler.start();
    scheduler.scheduleJob(job, crontrigger);

在我的系统上,我对它进行了测试,它工作得非常好。您可以使用以下模板,并请分享它的输出和一些有关记录器的信息(如果使用)

工作:

这是我的克朗触发器:

SchedulerFactory sf = new StdSchedulerFactory();
    Scheduler scheduler = sf.getScheduler();
    JobDetail job = JobBuilder.newJob(HelloJob.class).build();
    // run every 20 seconds infinite loop
    CronTrigger crontrigger = TriggerBuilder.newTrigger().withSchedule(
            CronScheduleBuilder.cronSchedule("0/20 * * * * ?")).build();
    scheduler.start();
    scheduler.scheduleJob(job, crontrigger);

第一次正常,但接下来的20秒可能会恢复6次以上检查,我是否正确JiI正在获取此示例:System.out.println(“Hello Quartz!,”+new Date());你好,石英!,2017年7月18日星期二16:14:20你好,石英!,2017年7月18日星期二16:14:40你好,石英!,2017年7月18日星期二16:15:00你好,石英!,2017年7月18日星期二16:15:20我正在使用这个cron表达式0 0/1*1/1*?*每分钟执行一次,但它会第一次执行不止一次ok,但接下来的20秒它可能会执行6次以上检查它,我是否正确JiI我得到了这个例子:System.out.println(“Hello Quartz!”,“+new Date());你好,石英!,2017年7月18日星期二16:14:20你好,石英!,2017年7月18日星期二16:14:40你好,石英!,2017年7月18日星期二16:15:00你好,石英!,2017年7月18日星期二16:15:20我正在使用这个cron表达式0 0/1*1/1*?*每一分钟,但它将执行多次
SchedulerFactory sf = new StdSchedulerFactory();
    Scheduler scheduler = sf.getScheduler();
    JobDetail job = JobBuilder.newJob(HelloJob.class).build();
    // run every 20 seconds infinite loop
    CronTrigger crontrigger = TriggerBuilder.newTrigger().withSchedule(
            CronScheduleBuilder.cronSchedule("0/20 * * * * ?")).build();
    scheduler.start();
    scheduler.scheduleJob(job, crontrigger);