- 自 JDK 1.5 开始,JDK 提供了 ScheduledThreadPoolExecutor 类用于计划任务 / 定时任务,这个类有两个用途:
- 在给定的延迟之后运行任务
- 周期性重复执行任务
- 在此之前是使用 Timer 类来完成定时任务的,但是 Timer 有缺陷:
- Timer 是单线程模式;
- 如果在执行任务期间某个 TimerTask 耗时较久,那么就会影响其它任务的调度;
- Timer 的任务调度是基于绝对时间的,对系统时间敏感;
- Timer 不会捕获执行 TimerTask 时所抛出的异常,由于 Timer 是单线程,所以一旦出现异常,则线程就会终止,其他任务也得不到执行。
public class ScheduledThreadPoolExecutor extends ThreadPoolExecutor implements ScheduledExecutorService {
public