ScheduledExecutorService 是 Java 线程池调度工具类 ,核心作用:执行延迟任务 / 周期性定时任务 ,比 Timer 更强大、更安全。
1. 核心作用
- 延迟执行任务(多久后执行一次)
- 周期性执行任务(每隔多久执行一次)
- 线程池管理:复用线程、控制并发数、避免频繁创建销毁线程
- 比
java.util.Timer更稳定:- Timer 单线程,一个任务异常全部挂掉
ScheduledExecutorService多线程,任务隔离,不会相互影响
2. 常用 4 个方法
-
schedule(Runnable, delay, unit)延迟
delay后执行一次。 -
scheduleAtFixedRate(command, initialDelay, period, unit)固定频率执行:以上一次开始时间计算周期。
-
scheduleWithFixedDelay(command, initialDelay, delay, unit)固定间隔执行:以上一次结束时间计算下一次开始。
-
shutdown()/shutdownNow()关闭调度线程池。
3. 典型使用场景
- 延时任务:订单超时未支付自动取消
- 周期性任务:定时同步数据、清理过期缓存
- 异步重试:接口调用失败延迟重试
4. 一句话面试回答
ScheduledExecutorService 是 Java 提供的定时调度线程池,用于执行延迟任务和周期性任务,具备线程复用、多线程隔离、高可靠性,替代传统 Timer。