如何从 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
对象跟踪作业的完成状态。
我在 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
对象跟踪作业的完成状态。