📅  最后修改于: 2023-12-03 15:31:34.112000             🧑  作者: Mango
定时排程,也叫定时任务,是指在指定的时间执行特定的任务。在 Java 中,可以借助多种方式来实现定时排程,如 Timer、ScheduledExecutorService、Quartz 等。
本文将介绍如何使用 ScheduledExecutorService 在 Java 中实现每天定时排程。
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 官方文档。