定時任務的一些思路

任務之間要麼就是有依賴關係例如: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,直到全部任務執行完。循環

相關文章
相關標籤/搜索