我希望我的程序在晚上 9 点时调用一个方法。
那么,是否有一个监听器可以连续检查时间并在某个时间触发一个方法?
如果不是,如何让程序每 60 秒调用一个方法?
非常感谢<3
最佳答案
Java 中没有定期检查的监听器,除非您自己创建一个监听器。要安排某件事在特定时间发生,您通常会延迟执行现在与所需时间之间的时间差。您可以使用 Java 8 的日期/时间 API 很好地完成此操作。如果您想在今天晚上 9 点触发某些内容,我建议:
final LocalDateTime now = LocalDateTime.now();
final LocalDateTime ninePMToday = LocalDateTime.now()
.withHour(21)
.withMinute(0)
.withSecond(0)
.withNano(0);
final ScheduledExecutorService ses = Executors.newScheduledThreadPool(1);
ses.schedule(() -> System.out.println("It's 9pm!"),
now.until(ninePMToday, ChronoUnit.MILLIS),
TimeUnit.MILLISECONDS);
您还可以安排它在每天晚上 9 点重复执行,只需对调度程序调用进行一些小调整即可:
ses.scheduleAtFixedRate(() -> System.out.println("It's 9pm!"),
now.until(ninePMToday, ChronoUnit.MILLIS),
TimeUnit.DAYS.toMillis(1),
TimeUnit.MILLISECONDS);
更改上面的代码以调整您的 60 秒间隔(查看调度程序方法的文档以获取更多信息)。
关于java - 如何使用 Java 在特定时间触发一个方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40236934/