統一物件訊息程式設計詳解 定時任務模組的命令列控制台

2021-09-10 06:50:54 字數 1991 閱讀 5900

前面文字介紹了定時任務模組,我們可以通過配置檔案的動態配置來控制任務的行為。由於配置檔案的動態更新是所有配置引數都重新更新,對於多執行緒的,某些情況下會影響到其他任務。如我們對任務a進行了restart ,下次我們對任務b進行shutdown,如果我們忘記將a的狀態改為run,則a再次restart。現在我們利用上篇文章介紹的命令列訊息輸入模組tlmsgscanner來建立定時任務的命令列控制台,通過命令可以對任務進行管理,而無需更改配置檔案。

定時任務命令列控制台模組為tlmsgtaskconsole,繼承命令列訊息控制類tlmsgscanner。其配置引數只有乙個msgtaskmodule,用來定義要管理的定時任務模組,可以在工廠配置中直接新增:

public class main  

}

其中最後一行 myfactory.putmsg("msgtaskconsole",new tlmsg().setaction("startscan"));  為啟動命令。

tlmsgtaskconsole繼承tlmsgscanner ,因此需要的配置也與tlmsgscanner一樣,我們在**中直接定義了預設配置:

@override

protected void initproperty() ;

}params.put("defaultmodule",name);

params.put("defaultaction","console");

hashmapmparams= new hashmap<>();

mparams.put("actions","console");

msgtomodules=new hashmap<>();

msgtomodules.put(name,mparams);

}

引數初始化中,定義了預設的訊息接受模組為控制台模組自身,預設的訊息指令為 "console"  。任何輸入訊息都傳送給控制台,然後由控制台解析指令傳送給定時任務模組:

@override

protected tlmsg checkmsgaction(object fromwho, tlmsg msg)

return returnmsg;

}private void console(object fromwho, tlmsg msg)

execmsg(msg);

}private boolean execmsg(tlmsg msg) }}

}if(settaskstatus(msg) == false)

else

return true ;

}private boolean execcmd(string cmd)

if(str[0].equals("shutdown") )

if(str[0].equals("restart") )

if(str[0].equals("stop") )

if(str[0].equals("run") )

return false ;

}switch (cmd)

}

執行效果:

控制台命令:

1、 run/stop/shutdown/restart    all  或者taskid  ,執行、停止、關閉、重啟所有任務或某個任務

其中 shutdown all  取消所有任務執行緒但不關閉執行緒池

shutdown pool  關閉執行緒池。

run:執行乙個任務,如果任務沒啟動則啟動,對於暫停的任務繼續執行,對於已經執行的任務不影響

stop:暫停任務,任務執行緒存在,可用run繼續執行。

restart  : 不管任務狀態為何,都重新啟動。

2、給任務設定引數 :  t=任務id  s=任務狀態 ,其他引數與配置檔案一樣  。

統一物件訊息程式設計(7) 物件訊息程式設計框架4

模組工廠 tlobjectfactory 負責模組的建立 初始化和儲存。每次程式執行,首先例項化模組工廠,然後由模組工廠啟動主模組。原始碼 public class tlobjectfactory extends tlbasemodule public void destroymodule over...

一 物件模型

在ruby程式中,物件僅僅是其大世界的乙個公民而已,除了物件還有其他語言構件,比如類 class 模組 module 以及例項變數 imstance variable 等,元程式設計操控的就是這些語言構件。所有語言構件存在於其中的系統稱為物件模型,它是ruby的靈魂。1 物件由一組例項變數和乙個類的...

物件導向(一) 物件屬性

物件屬性型別 每個物件都是基於乙個引用型別建立的 1.資料屬性 2.訪問器屬性 4個特性 1.configurable 能否delete屬性從而重新定義屬性 能否修改屬性的特性 能否把屬性改為訪問器屬性 2.enumerable 能否用for in迴圈返回屬性 3.writable 能否修改屬性的值...