序
由于公司老项目的重构,希望对定时任务
这一大块也进行一番“修整”,但是又不想用开源的分布式定时任务
框架(因为公司对于自己的所有系统都有一个配置中心工程
,领导希望将定时任务的功能嵌入
到这个工程)。
于是就需要自己写一套定时任务的增删改查页面。实现定时任务
的动态的增删改
。
故此有了此篇文章。
我的思路
springboot的定时任务虽然没有动态新增修改开启关闭
的功能,但是它的模板给的很好,值得我们去学习一下它的实现原理,看是否能做相应修改实现我们想要的功能。于是我带着这样的想法阅读了springboot定时任务的源码
,也确实深受启发。
springboot是如何实现定时任务的?
大白话
springboot扫描spring中所有的bean如果对象的方法上有@Scheduled的注解,则拉取注解中的时间相关信息,将bean以及方法分装成runnable
对象,将时间信息以及runnable
对象放入ScheduledThreadPoolExecutor任务线程池中,时间一到则执行任务(反射实现
)。
源码解析
一切的入口@EnableScheduling注解。