如何从 Java 开始确定日期一次

How make a job to determine date only once from Java

我在 Java 中有一个后端。我想创建 运行 仅在特定日期一次的工作。 我在 .Net 中看到过示例 我不知道在我的 Java 后端是否可行?

这是 .Net 职位 https://www.quartz-scheduler.net/

例如...

createJob(Date date) {
...
start(date) {
...
myMethod();

使用

createJob(myDate); //30-05-2017 15:25

我相信你想要的是 ScheduledExecutorService schedule method that accepts a delay parameter. That delay can be specified in different TimeUnit 纳秒、秒、小时等数量

这个想法是以某些时间单位(例如秒)计算所需执行日期与当前时间之间的差异。

这是一个片段,应该可以为您提供线索 (Java 8)。

public class App {

    public static void main(String[] args) {
        final Runnable jobToExecute = () -> System.out.println("Doing something on " + new Date());

        ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(1);
        ScheduledFuture future = executorService.schedule(jobToExecute, diffInSeconds(LocalDateTime.of(2017, 5, 30, 23, 54, 00)), TimeUnit.SECONDS);
    }

    private static long diffInSeconds(LocalDateTime dateTime) {
        return dateTime.toEpochSecond(ZoneOffset.UTC) - LocalDateTime.now().toEpochSecond(ZoneOffset.UTC);
    }
}

您可以通过 ScheduledExecutorService::schedule 方法返回的 ScheduledFuture 对象跟踪作业的完成状态。