定时任务的一些思路

任务之间要么就是有依赖关系例如:A依赖B,B依赖C,要么就是独立的,无依赖关系,这个时候为了提升任务的执行效率,咱们能够把这些任务柔和成一个定时任务来执行:数据库

假设:A依赖B,B依赖C,那么C并不依赖其余任务,能够首先执行,B须要等C执行完才能够执行,A须要等B、C执行完才能够执行,线程

一、数据库中建立表Sync,主要用来记录任务间的依赖关系,字段:id,name,depend,status日志

     例如:任务A   Sync(1,'A','B','Y') ,任务B Sync(2,'B','C','Y'),任务C Sync(3,'C',,'Y')blog

2: 把Sync表中的任务读取出来,建立任务执行日志 tasklog:字段:id,taskid,date,status,status有3中状态:ready、failure、success效率

     对于任务C这种不须要依赖其余任务的status设置为readydate

     须要依赖其余任务的status设置为failure定时任务

三、任务的执行日志status为ready的放入线程池中去执行,failure的忽略线程池

四、当线程池中的任务C执行完成后,判断是否有后继任务,没有就退出,有的话判断该后继任务(任务B)的前驱任务是否有执行完,执行完就设置该后继任务的状态为ready,循环执行三、4,直到全部任务执行完。循环