framework
framework/scheduling/index.md
medium
framework-scheduling-index
Java 任务调度索引 — @Scheduled 单机定时 / @Async 异步 / XXL-Job 分布式调度 / Quartz 复杂持久化四个独立决策点。Use when 写定时任务 / 做异步执行 / 选调度框架 / 排查集群重复执行时。
子项索引
| 子项 | 一句话 |
|---|---|
| scheduling-scheduled-annotation skill | Spring @Scheduled 单机定时任务 — fixedRate/fixedDelay/cron 选择,集群多节点会重复执行需分布式锁兜底 |
| scheduling-async-execution skill | Spring @Async 异步执行 — 必须 @EnableAsync,且自定义线程池替代默认 SimpleAsyncTaskExecutor(每次新建线程不复用) |
| scheduling-xxl-job skill | XXL-Job 分布式任务调度 — 调度中心统一触发(免分布式锁)、可视化管理、失败重试、分片广播,国内中小项目首选 |
| scheduling-quartz skill | Quartz 调度框架 — 复杂 Cron 编排、Job/Trigger 分离、misfire 补偿策略,集群用 JDBC JobStore 持久化到数据库 |
Scheduling · 任务调度索引
四个独立决策点,按你正在做的事下钻:
| 你在做什么 | 进哪个 |
|---|---|
| 单机写个简单定时任务(fixedRate/cron) | scheduled-annotation |
| 把方法改成异步执行、不阻塞调用方 | async-execution |
| 多节点分布式调度、要可视化/重试/分片 | xxl-job |
| 复杂 Cron 编排、任务要持久化到 DB | quartz |
选型决策(先定哪一类,再下钻)
| 场景 | 选哪个 | 理由 |
|---|---|---|
| 单机、简单、可接受集群重复 | @Scheduled |
零依赖,一个注解搞定 |
| 多节点集群、要避免重复执行 | XXL-Job | 调度中心统一触发,国内中小项目首选 |
| 复杂 Cron 编排 + 任务持久化 | Quartz | misfire 策略、JDBC JobStore 集群 |
@Scheduled集群下每个节点都会触发同一任务 → 重复执行。要么加分布式锁兜底(见 scheduled-annotation),要么直接上 XXL-Job 由调度中心统一派发。
链接
- 上层:
../index.md - 平行:
../spring-boot/index.md - 相关:
../redis/index.md(分布式锁兜底@Scheduled集群重复)