多叉樹抽象任務依賴

2021-12-29 16:22:37 字數 2294 閱讀 4215

系統在空閒是可以跑一些任務來進行一些統計方面的運算,大多是取資料,插資料,統計資料。這些任務有時候是有依賴關係的,比如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;

******basetask:

public abstract class ******basetask 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 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 getnexttasks() {

return nexttasks;

public void setnexttasks(list nexttasks) {

this.nexttasks = nexttasks;

processgroup:

public abstract class processgroup {

// 每個任務程序執行的第乙個任務邏輯

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();

******processgroup :

public class ******processgroup extends processgroup{

@override

public void beforeprocess() {

system.out.println("beforeprocess");

@override

public void afterprocess() {

system.out.println("afterprocess");

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

字典樹(多叉樹)

實現乙個 trie 字首樹 包含 insert,search,和 startswith 這三個操作。示例 trie trie new trie 你可以假設所有的輸入都是由小寫字母 a z 構成的。保證所有輸入均為非空字串。總結 這道題是字典樹的應用,在做這道題時花了不少時間,但是確實這個不是什麼難題...

多叉樹轉二叉樹

多叉樹的根結點為二叉樹的根,多叉樹的結點的第乙個兒子變成二叉樹對應結點的左孩子,多叉樹的結點的右兄弟變成二叉樹種該結點的右孩子。如下 c語言 01 include 02 include 03 include 04 include 0506 typedef struct treenode treeno...

多路查詢樹 多叉樹和B樹

一 二叉樹存在的問題 二叉樹需要載入到記憶體,若二叉樹的結點少沒有什麼問題,但是若二叉樹的節點很多 比如1億 可能存在如下問題 1 在構建二叉樹時,需要多次進行 i o 操作 海量資料存在資料庫或檔案中 結點海量,構建二叉樹時速度有影響 問題2 結點海量也會造成二叉樹的高度很大,會降低操作速度。二 ...