我正在尝试使用石英API来实现CronTrigger,它可以工作,但效果不是很好,当达到cron表达式时,作业将无限执行,而且我也不知道为什么。

我只想在到达cron表达式时执行1次。

有人可以帮助我知道为什么它多次执行吗?

这是我的代码

    package cron;

import java.text.ParseException;

import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;

import cron.HelloJob;

public class Quartz {

    public static void main(String[] args) throws ParseException, SchedulerException {
        JobDetail job = new JobDetail();
        job.setName("health check");
        job.setJobClass(HelloJob.class);

        System.out.println("After job");

        CronTrigger triggr = new CronTrigger();
        triggr.setName("Check");
        triggr.setCronExpression("* 50 07 * * ? *");

        System.out.println("Cron expression" + triggr.getCronExpression());

        Scheduler scheduler2 = new StdSchedulerFactory().getScheduler();
        scheduler2.start();
        scheduler2.scheduleJob(job, triggr);
    }

}


这是工作

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


public class HelloJob implements Job {
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        System.out.println("Hello job");


    }


}


这是我的输出
java - Quartz CronTrigger多次触发-LMLPHP

我只想用我的cron打印1张

最佳答案

您将其配置为每秒触发(第一个*):

triggr.setCronExpression("* 50 07 * * ? *");


要解决它,只需输入一个值,例如0:

triggr.setCronExpression("0 15 15 * * * *");


这应该在每天的15:15:00(hh:mm:ss)触发。

在这里查看用法:

http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/crontrigger.html

关于java - Quartz CronTrigger多次触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48707682/

10-10 12:26