在java中有一類線程,專門在后臺提供服務,此類線程無需顯式關閉,當程序結束了,它也就結束了,這就是守護線程 daemon thread。如果還有非守護線程的線程在執(zhí)行,它就不會結束。 守護線程有何用處呢?讓我們來看個實踐中的例子。
在我們的系統(tǒng)中經常應用各種配置文件(黑名單,禁用詞匯),當修改配置文件后,一般要重啟服務,系統(tǒng)才能夠加載;當重啟服務的代價比較高的情況下,這種加載方式不能滿足我們的要求,這個時候守護線程該發(fā)揮它的作用了,它可以實時加載你的配置文件,無需重啟。(當然,相當重要的配置文件,不推薦實時加載)
FileWatchdog是個抽象類,本身是線程的子類;在構造函數(shù)中設置為守護線程; 此類用hashmap維護著一個文件和最新修改時間值對,checkAndConfigure()方法用來檢測哪些文件的修改時間更新了,如果發(fā)現(xiàn)文件更新了則調用doOnChange方法來完成監(jiān)測邏輯;doOnChange方法是我們需要實現(xiàn)的;看下面關于一個黑名單服務的監(jiān)測服務:
Powered by: BlogJava Copyright © ikon