📜  java 每天定时排程 - Java (1)

📅  最后修改于: 2023-12-03 15:31:34.112000             🧑  作者: Mango

Java 定时排程

定时排程,也叫定时任务,是指在指定的时间执行特定的任务。在 Java 中,可以借助多种方式来实现定时排程,如 Timer、ScheduledExecutorService、Quartz 等。

本文将介绍如何使用 ScheduledExecutorService 在 Java 中实现每天定时排程。

ScheduledExecutorService

ScheduledExecutorService 是 Java 提供的一个用于定时调度任务的线程池。它可以执行延迟任务或周期性任务。

在使用 ScheduledExecutorService 之前,需要先创建一个 ScheduledExecutorService 实例。可以使用 Executors 工具类创建一个 ScheduledExecutorService 实例,如下所示:

ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);

上面的代码创建了一个核心线程数为 1 的 ScheduledExecutorService 实例。

接下来,我们需要创建一个任务并将其提交给 ScheduledExecutorService。假设我们需要每天在 20:00 执行某个任务,那么我们可以使用以下代码来创建这个任务:

Runnable task = () -> {
    // 任务逻辑
};
long delay = Duration.between(LocalTime.now(), LocalTime.of(20, 0)).toMillis();
long period = TimeUnit.DAYS.toMillis(1);
executor.scheduleAtFixedRate(task, delay, period, TimeUnit.MILLISECONDS);

上面的代码中,我们首先创建了一个 Runnable 对象 task,用于执行具体的任务逻辑。然后计算出距离下次执行时间的延迟时间 delay 和周期 period,将任务提交给 ScheduledExecutorService 实例 executor。

由于需要每天执行任务,因此周期 period 设置为 1 天。

总结

本文介绍了如何使用 ScheduledExecutorService 在 Java 中实现每天定时排程。通过创建 ScheduledExecutorService 实例,并将任务按周期提交给该实例,可以实现定时任务的调度。

关于 ScheduledExecutorService 的更多使用方式和详细解释,可以参考 Java 官方文档。