首頁  >  問答  >  主體

java 線程監控 重啟線程 觀察者模式的問題的問題

關於線程監控重啟的問題我看了
http://www.cnblogs.com/ae6623...
這篇文章介紹的觀察者模式我看他是把重啟線程的關鍵程式碼放到了線程體中的catch塊中哪如果是沒有捕獲到的異常怎麼辦額我異常不太了解那個Exception 類是所有異常都能捕獲到麼,如果這樣的話還會不會有遺漏的線程死亡原因不能監控到呢

天蓬老师天蓬老师2702 天前740

全部回覆(2)我來回復

  • 漂亮男人

    漂亮男人2017-05-27 17:43:04

    Exception是所有异常类的父类, catch(Exception)能捕捉到所有的異常

    通常異常又分為ExceptionRuntimeException

    • Exception必须捕获, 发生异常时, 会执行catch中的業務

    • RuntimeException, 发生异常时, 如果不捕获会中断当前线程, 如果捕获和Exception一樣

    通常線程退出(死亡)的條件

    • 線程業務執行完畢

    • 執行緒發生未捕獲的RuntimeException

    你給的文章中重啟線程的本質是讓上一個線程A已经结束了(break), 调用Observable#notifyObservers()重新启动了一个线程A1,也就是说如果没有调用Observable#notifyObservers()的話, 是不會重啟線程的.

    所以, 如果在呼叫Observable#notifyObservers()之前發生了Observable#notifyObservers()之前发生了RuntimeException, 而且未捕獲的話, 線程也就不會重啟了.

    回覆
    0
  • PHP中文网

    PHP中文网2017-05-27 17:43:04

    一般情況下被觀察的線程異常發生位置可以確定,在確定的位置捕捉​​異常並重啟線程。題主連結的處理方法是可行的。

    回覆
    0
  • 取消回覆