国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

多叉樹抽象任務依賴-任務調度系列1

2019-11-14 22:14:12
字體:
來源:轉載
供稿:網友
多叉樹抽象任務依賴-任務調度系列1

  系統在空閑時可以跑一些任務來進行一些統計方面的運算,大多是取數據,插數據,統計數據。這些任務有時候是有依賴關系的,比如A任務統計依賴B任務完成,起初我們把B任務安排在2點跑,A任務3點跑,可是B任務如果在一個小時內不能完成,在跑A任務的時候就會有問題。那么必須要保證B任務是完成的情況下才開跑A任務。

  所以是不是可以考慮用一個鏈表這種數據結構把任務串起來執行,并且也保證每個任務的業務都在代碼層面上分開。

  類似:

    

  代碼示例:

BaseTask:

public abstract class BaseTask {    PRivate String id;        public abstract void execute();    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }}

SimpleBaseTask:

public abstract class SimpleBaseTask extends BaseTask{    public void execute() {        beforeExecute();        doTask();        doNextTask();        afterExecute();    }    public void doNextTask(){        if(nextTasks != null){            for (BaseTask task : nextTasks) {                task.execute();            }        }    }        public abstract void beforeExecute();        public abstract void afterExecute();        public abstract void doTask();        private String name;        private BaseTask parentTask;    // 每一個任務都可以擁有多個后續任務 這些任務都依賴本任務的執行完成    private List<BaseTask> nextTasks;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public BaseTask getParentTask() {        return parentTask;    }    public void setParentTask(BaseTask parentTask) {        this.parentTask = parentTask;    }    public List<BaseTask> getNextTasks() {        return nextTasks;    }    public void setNextTasks(List<BaseTask> nextTasks) {        this.nextTasks = nextTasks;    }}

ProcessGroup:

public abstract class ProcessGroup<T extends BaseTask> {    // 每個任務進程執行的第一個任務邏輯    private BaseTask firstTask;        public BaseTask getFirstTask() {        return firstTask;    }    public void setFirstTask(BaseTask firstTask) {        this.firstTask = firstTask;    }        public abstract void beforeProcess();        public abstract void afterProcess();        public void doProcess(){        beforeProcess();        firstTask.execute();        afterProcess();    }}
SimpleProcessGroup :
public class SimpleProcessGroup extends ProcessGroup<SimpleBaseTask>{    @Override    public void beforeProcess() {        System.out.println("beforeProcess");    }    @Override    public void afterProcess() {        System.out.println("afterProcess");    }}

這種抽象局限性太大,把所有任務串聯起來會導致任務需要手動拆分,依賴關系植入代碼,難以維護。并且多任務依賴依然無法符合要求。

所以需要,更加強大的一個任務調度系統來實現這種靈活的任務依賴關系。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁阳县| 南召县| 资阳市| 开封市| 诏安县| 南部县| 会东县| 芦溪县| 满洲里市| 左权县| 土默特左旗| 北碚区| 怀化市| 柘荣县| 肥乡县| 潍坊市| 抚宁县| 张北县| 长宁区| 云浮市| 双流县| 新宁县| 湛江市| 隆安县| 繁昌县| 托克逊县| 海安县| 华池县| 新化县| 清河县| 柳江县| 正镶白旗| 临泽县| 丹东市| 连南| 柳州市| 嘉祥县| 安化县| 拜泉县| 福安市| 屯留县|