定时任务的一些思路
任务之间要么就是有依赖关系例如:A依赖B,B依赖C,要么就是独立的,无依赖关系,这个时候为了提高任务的执行效率,我们可以把这些任务柔和成一个定时任务来执行:
假设:A依赖B,B依赖C,那么C并不依赖其他任务,可以首先执行,B需要等C执行完才可以执行,A需要等B、C执行完才可以执行,
1、数据库中创建表Sync,主要用来记录任务间的依赖关系,字段:id,name,depend,status
例如:任务A Sync(1,'A','B','Y') ,任务B Sync(2,'B','C','Y'),任务C Sync(3,'C',,'Y')
2: 把Sync表中的任务读取出来,创建任务执行日志 tasklog:字段:id,taskid,date,status,status有3中状态:ready、failure、success
对于任务C这种不需要依赖其他任务的status设置为ready
需要依赖其他任务的status设置为failure
3、任务的执行日志status为ready的放入线程池中去执行,failure的忽略
4、当线程池中的任务C执行完成后,判断是否有后继任务,没有就退出,有的话判断该后继任务(任务B)的前驱任务是否有执行完,执行完就设置该后继任务的状态为ready,循环执行3、4,直到所有任务执行完。