java 線程監(jiān)控 重啟線程 觀察者模式的問題的問題
問題描述
關于線程監(jiān)控 重啟的問題我看了http://www.cnblogs.com/ae6623...這篇文章介紹的觀察者模式 我看他是把重啟線程的關鍵代碼放到了線程體中的catch塊中 哪如果是沒有捕獲到的異常怎么辦 額 我異常不太了解 那個Exception 類是所有異常都能捕獲到么 ,如果這樣的話 還會不會有遺漏的線程死亡原因不能監(jiān)控到呢
問題解答
回答1:Exception是所有異常類的父類, catch(Exception)能捕獲到所有的異常
通常異常又分為Exception和RuntimeException
Exception必須捕獲, 發(fā)生異常時, 會執(zhí)行catch中的業(yè)務
RuntimeException, 發(fā)生異常時, 如果不捕獲會中斷當前線程, 如果捕獲和Exception一樣
通常線程退出(死亡)的條件
線程業(yè)務執(zhí)行完畢
線程發(fā)生未捕獲的RuntimeException
你給的文章中重啟線程的本質是讓上一個線程A已經(jīng)結束了(break), 調用Observable#notifyObservers()重新啟動了一個線程A1,也就是說如果沒有調用Observable#notifyObservers()的話, 是不會重啟線程的.
所以, 如果在調用Observable#notifyObservers()之前發(fā)生了RuntimeException, 而且未捕獲的話, 線程也就不會重啟了.
回答2:一般情況下被觀察的線程異常發(fā)生位置可以確定,在確定的位置捕捉異常并重啟線程。題主連接的處理方法是可行的。
相關文章:
1. html5 - canvas中的mousedrag事件,為什么鼠標拖出canvas,然后再次移入canvas,drag事件還觸發(fā)2. html - 前端大牛都頂一下!CSS鼠標樣式問題,如圖所示3. 網(wǎng)頁爬蟲 - python爬蟲用BeautifulSoup爬取<s>元素并寫入字典,但某些div下沒有這一元素,導致自動寫入下一條,如何解決?4. css3 - 求教CSS圖標庫的寫法,也就是先做雪碧圖,然后寫一個css表,用的時候直接用class就可以了5. java - Android Studio 中的Service問題6. javascript - jquery怎么給select option一個點擊時觸發(fā)的事件,如圖 如果選擇自定義觸發(fā)一個時間?7. 百度地圖api - Android百度地圖SDK,MapView上層按鈕可見卻不可觸,怎么解決?8. javascript - es6擴展運算符...的問題9. node.js - 在nodejs環(huán)境中如何配置webhook以實現(xiàn)hexo博客的自動更新?10. node.js - vue-resource,如何改變響應格式?
