📜  Java中的 ScheduledExecutorService 接口(1)

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

Java中的 ScheduledExecutorService 接口

简介

Java中的 ScheduledExecutorService 接口是一个调度器,它可用于在指定时间内按照一定的频率执行任务。该接口是在Java5中引入的,并且是java.util.concurrent包中的一部分。ScheduledExecutorService接口提供了两种方法来调度任务:

  1. schedule() - 在指定的延迟时间后执行一次任务
  2. scheduleAtFixedRate() - 按照指定的间隔时间在指定时间开始重复执行任务

ScheduledExecutorService接口在实现定时任务的时候非常方便,比如定时备份、定时清理数据、定时发送邮件等。

代码示例
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class ScheduledExecutorServiceDemo {

    public static void main(String[] args) {
        ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
        
        // schedule()方法 - 在指定的延迟时间后执行一次任务
        executor.schedule(() -> System.out.println("Hello, World!"), 5, TimeUnit.SECONDS);
        
        // scheduleAtFixedRate()方法 - 按照指定的间隔时间在指定时间开始重复执行任务
        executor.scheduleAtFixedRate(() -> System.out.println("Task executed at " + System.currentTimeMillis()), 0, 1, TimeUnit.SECONDS);
    }
}
方法解释

schedule()

public ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit);

| 参数 | 描述 | | --- | --- | | command | 要执行的任务 | | delay | 任务执行前的延迟时间 | | unit | delay参数的时间单位 |

scheduleAtFixedRate()

public ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit);

| 参数 | 描述 | | --- | --- | | command | 要执行的任务 | | initialDelay | 任务第一次执行前的延迟时间 | | period | 每次执行任务间的间隔时间 | | unit | initialDelay和period参数的时间单位 |

结论

ScheduledExecutorService接口是Java中实现定时任务非常方便的接口。使用该接口可实现各种不同的任务,比如定时备份、定时清理数据、定时发送邮件等。在Java5中引入的ScheduledExecutorService接口简化了多线程编程,并提高了线程的可靠性和效率。