Java 你如何每5分钟执行一次cron作业?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/40521416/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-11 22:46:41  来源:igfitidea点击:

How do you execute cron job every 5 minutes?

java

提问by Mhanaz Syed

JobDetail job1 = JobBuilder.newJob(FirstJob.class).withIdentity("job1", "group1").build();

        Trigger trigger1 = TriggerBuilder.newTrigger().withIdentity("cronTrigger1", "group1")
                .withSchedule(CronScheduleBuilder.cronSchedule("*/10 * * * * ?")).build();

        Scheduler scheduler1 = new StdSchedulerFactory().getScheduler();
        scheduler1.start();
        scheduler1.scheduleJob(job1, trigger1);

        JobDetail job2 = JobBuilder.newJob(SecondJob.class).withIdentity("job2", "group2").build();

        Trigger trigger2 = TriggerBuilder.newTrigger().withIdentity("cronTrigger2", "group2")
                .withSchedule(CronScheduleBuilder.cronSchedule(new CronExpression("0/7 * * * * ?"))).build();

        Scheduler scheduler2 = new StdSchedulerFactory().getScheduler();
        scheduler2.start();
        scheduler2.scheduleJob(job2, trigger2);

        Thread.sleep(100000);

        scheduler1.shutdown();
        scheduler2.shutdown();

I am trying to execute a Cron Job every 5 minutes of an hour but its not executing on time. I think that the time expression is wrong.

我试图每 5 分钟执行一次 Cron 作业,但它没有按时执行。我认为时间表达是错误的。

How do you set the time expression for a 1, 5 minute job and a 2 for 1 hour job?

您如何为 1、5 分钟的工作和 2 的 1 小时工作设置时间表达式?

采纳答案by Ye Win

For job 1, 5 minute, you can use:

对于作业 1, 5 分钟,您可以使用:

*/5 * * * * ?

Because the first field is for minutes. If you specify * in this field, it runs every minutes. If you specify */5 in the 1st field, it runs every 5 minutes as shown above.

因为第一个字段是分钟。如果在此字段中指定 *,它将每分钟运行一次。如果您在第一个字段中指定 */5,则它每 5 分钟运行一次,如上所示。

For job 2, 1 hour, you can use:

对于作业 2、1 小时,您可以使用:

0 */1 * * *

Because the second field is for hours. If you specify * in this field, it runs every hour. If you specify */5 in the 2nd field, it runs every 5 hours as shown above.

因为第二个字段是小时。如果您在此字段中指定 *,它将每小时运行一次。如果您在第二个字段中指定 */5,它将每 5 小时运行一次,如上所示。

Not related with cron but your code seems to be missing to pass expression as to TheLostMind comment.

与 cron 无关,但您的代码似乎缺少传递有关 TheLostMind 评论的表达式。

Correct sentence For job 1:

作业 1 的正确句子:

Trigger trigger1 = TriggerBuilder.newTrigger().withIdentity("cronTrigger1", "group1")
                .withSchedule(CronScheduleBuilder.cronSchedule(new CronExpression("*/10 * * * * ?"))).build();

Hope it helps.

希望能帮助到你。