java 線程監控 重啟線程 觀察者模式的問題的問題
問題描述
關于線程監控 重啟的問題我看了http://www.cnblogs.com/ae6623...這篇文章介紹的觀察者模式 我看他是把重啟線程的關鍵代碼放到了線程體中的catch塊中 哪如果是沒有捕獲到的異常怎么辦 額 我異常不太了解 那個Exception 類是所有異常都能捕獲到么 ,如果這樣的話 還會不會有遺漏的線程死亡原因不能監控到呢
問題解答
回答1:Exception是所有異常類的父類, catch(Exception)能捕獲到所有的異常
通常異常又分為Exception和RuntimeException
Exception必須捕獲, 發生異常時, 會執行catch中的業務
RuntimeException, 發生異常時, 如果不捕獲會中斷當前線程, 如果捕獲和Exception一樣
通常線程退出(死亡)的條件
線程業務執行完畢
線程發生未捕獲的RuntimeException
你給的文章中重啟線程的本質是讓上一個線程A已經結束了(break), 調用Observable#notifyObservers()重新啟動了一個線程A1,也就是說如果沒有調用Observable#notifyObservers()的話, 是不會重啟線程的.
所以, 如果在調用Observable#notifyObservers()之前發生了RuntimeException, 而且未捕獲的話, 線程也就不會重啟了.
回答2:一般情況下被觀察的線程異常發生位置可以確定,在確定的位置捕捉異常并重啟線程。題主連接的處理方法是可行的。
相關文章:
1. Docker for Mac 創建的dnsmasq容器連不上/不工作的問題2. javascript - QWebEngineView 如何爬 angular 的動態數據?3. javascript - 使用angular 的ui-sref 中出現了中文參數,點擊跳轉后瀏覽器的地址欄里出現轉義后的%AE....%a%44. 工作近5年,3年Java Web ,近2年前端,未來何去何從?5. java - 郵箱如何發送html內容6. html5 - 這個代碼顯示功能如何實現?7. javascript - 用JS 七牛上傳圖片出現文件已存在的錯誤(file exists)8. java - 字節流轉成字符串之后,在通過字符串轉成字節流后的文件為什么會不一樣?9. css3 - 圖片等比例縮放10. java - 如何理解“不要通過共享內存來通信,而應該通過通信來共享內存”?
