1. 程式人生 > >Java 多執行緒之執行緒監控

Java 多執行緒之執行緒監控

在程式開發中我們經常會使用到很多執行緒去做不同的業務,我們怎麼能方便的管理這些執行緒呢?是否我們希望我們建立的執行緒能夠一直執行下去,知道程式退出?在這裡我們使用一個監控執行緒的概念。

我們可以定義一個執行緒繼承自Thread類,在其中定義一個Map集合,用於存放我們需要管理的執行緒;當我們需要對某個執行緒進行操作時,我們就可以根據他的key值獲取到;
private HashMap<String, Thread> threads2Watch = new HashMap<String, Thread>();

在run方法中,我們寫一個迴圈,讓此執行緒一直執行下去,並利用sleep方法,讓其停頓一段時間;

while (true) {
            try {
                sleep(1 * 60 * 1000);
            } catch (InterruptedException e) {
                DebugLog.logger.error("Exception!!", e);
                continue;
            }
        }

注意這裡的catch中加入了一個continue;即使此次sleep發生了異常,while迴圈仍然可以執行下去;不會對整個執行緒造成影響;

在while()迴圈中,我們就可以寫自己管理執行緒的業務方法了,比如遍歷整個map集合,獲取當前執行緒的轉態,如果執行緒已經結束,我們就從新開啟一個這樣的執行緒,並把它加入map集合中;

通過以上的這種做法,我們可以讓我們自己程式中想要一直執行的執行緒一直執行下去,這種執行緒尤其適合在頻繁監聽某一網路埠,網路狀態,某些值的變化是很重要的;

通過這種思想,我們可以根據自己需要擴充套件自己的功能;