繁体   English   中英

创建在一天中的特定时间运行的计划或 Cron 作业

[英]Create a scheduled or Cron Job that runs at a specific time of day

我需要在 Java 中创建计划作业或 Cron 作业,以便每天早上 6 点运行。 有没有简单的方法来做到这一点。 我曾尝试将 Timer class 与 scheduleAtFixedRate 方法一起使用,但它只需要一个延迟。

有一种方法可以先用一天,再用周期

您将如何创建一个特定的日期和时间来启动调度程序?

我需要运行作业的 Class 已经使用 TimerTask 进行了扩展。

您可以使用cron4j 或者用另一个带有签名(date,delay) (delay)获取当前日期,等到第一次出现,然后用(delay)签名调用已经定义的方法......也就是使用schedule(TimerTask task, Date firstTime, long period) class Timerschedule(TimerTask task, Date firstTime, long period)

当我听到诸如“在那个精确的时间用 Java 执行某事”之类的话时,我会想到 Timer 或 Quartz Scheduling。 它们各有利弊,但您可以安全地使用它们。

您在Quart Official Guide中有一个计划任务的示例:

package org.acme.quartz;

import javax.enterprise.context.ApplicationScoped;
import javax.transaction.Transactional;
import io.quarkus.scheduler.Scheduled;

@ApplicationScoped 
public class TaskBean {

    @Transactional
    @Scheduled(every = "10s", identity = "task-job") 
    void schedule() {
        Task task = new Task(); 
        task.persist(); 
    }
}

另一种方式是这种方式,对于重复周期部分:

Trigger trigger = TriggerBuilder.newTrigger().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(60).repeatForever()).build();

另一种方式是使用 CronExpression 的能力:

Trigger trigger = TriggerBuilder.newTrigger().startNow()
          .withSchedule(CronScheduleBuilder.cronSchedule(expression))
          .build();

其中表达式是CRON 表达式

如果你不了解 Quartz,你可以看看他们的Cookbook

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM