一直自己想实现一个定时调度器。看到很多人推荐了时间轮,也想了下用 thread下面的timer。每秒一次一次的去查找任务。并开始线程来调用。
我对几个开源的任务调度的组件比较有兴趣。前面用过了FluentScheduler,觉得这个比较简单,就打开它的代码看看。
它用的是一个timer来调度任务的。
对它内部的Schedule集合来处理。
源码是这个方法 ScheduleJobs
过程是
timer先停掉。change(-1,-1)
Schedule集合排序
空返回
获取第一个Schedule
判断其NextRun《=Now
执行任务RunJob
NextRun计算
ScheduleJobs
完毕。