如何通过Java只确定一次约会日期

时间:2017-05-30 20:06:09

标签: java .net cron jobs

我有一个Java后端。我想创建在特定日期只运行一次的作业。 我在.Net中看过一些例子我不知道在我的Java后端是否可能?

这是.Net工作https://www.quartz-scheduler.net/

例如......

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

使用

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

1 个答案:

答案 0 :(得分:2)

我相信你想要的是ScheduledExecutorService 接受延迟参数的schedule方法。该延迟可以用不同的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对象跟踪作业的完成状态。