在 Java 中,ExecutorService 本身并不支持“定时执行”,它主要用于线程池管理任务执行。
如果你需要定时 / 周期性执行任务,应该使用 ScheduledExecutorService(它是 ExecutorService 的子接口)。
ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(2);
scheduler.schedule(() -> {
System.out.println("延迟 5 秒执行");
}, 5, TimeUnit.SECONDS);
scheduler.scheduleAtFixedRate(() -> {
System.out.println("每 3 秒执行一次");
}, 0, 3, TimeUnit.SECONDS);
⚠️ 如果任务执行时间 > period,会连续执行(不重叠排队)
scheduler.scheduleWithFixedDelay(() -> {
System.out.println("任务结束后再等 3 秒执行");
}, 0, 3, TimeUnit.SECONDS);
✅ 更适合“任务耗时不稳定”的场景
scheduler.shutdown();
// 或
scheduler.shutdownNow();
| 方法 | 时间计算方式 | 适用场景 |
|---|---|---|
| scheduleAtFixedRate | 上一次开始 | 精确周期(如心跳) |
| scheduleWithFixedDelay | 上一次结束 | 任务耗时不稳定 |
ExecutorService 只提供:
execute()submit()ScheduledExecutorService定时执行任务 → 用 ScheduledExecutorService,不要用 ExecutorService
如果你愿意,我也可以帮你:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。