任务调度的实现方式有很多,如果要实现我们的调度需求,我们对这个工具有什么样的基本要求呢?
基本需求
1)可以定义触发的规则,比如基于时刻、时间间隔、表达式。
2)可以定义需要执行的任务。比如执行一个脚本或者一段代码。任务和规则是分开的。
3)集中管理配置,持久配置。不用把规则写在代码里面,可以看到所有的任务配置,方便维护。重启之后任务可以再次调度——配置文件或者配置中心。
4)支持任务的串行执行,例如执行 A任务后再执行 B任务再执行 C任务。
5)支持多个任务并发执行,互不干扰(例如 ScheduledThreadPoolExecutor)。
6)有自己的调度器,可以启动、中断、停止任务。
7)容易集成到 Spring。