The King's Museum

ソフトウェアエンジニアのブログ。

『Javaの理論と実践: スレッドはどこへ消えた?』のメモ

Javaの理論と実践: スレッドはどこへ消えた?

記事:Javaの理論と実践: スレッドはどこへ消えた?

メモ:

  • スレッドがスタックトレースを残さず消える場合がある
    • 単一スレッド環境:例外が発生してコンソールにスタックトレースが出力される
    • マルチスレッド環境:例外が発生して当該スレッドが終了しても、コンソールにスタックトレースが出力されない場合がある
  • スレッドの消滅が起きるのはいつ?
    • RuntimeException などのチェックされない例外がとんだ時
    • 終わることのないブロック IO で待ち続ける時
    • 永遠に notify() が呼び出されないモニタがある時
  • 外部コードを呼び出すスレッドの場合、RuntimeException を catch して正しく処理する
  • ThreadGroup によって提供されるチェックされない例外ハンドラーを利用することも考える
    • JDK 1.5 で Thread にチェックされない例外処理ハンドラーが追加されたっぽいので必要ない?
  • レッドリークを防止する最良の方法は、予防と検出の両方を行う。
    • 外部コードを呼び出す場合はチェックされない例外に注意する
    • 最低限ログを出力する

感想

JDK 1.5 で Thread にチェックされない例外処理が追加されたっぽいので必要ない?

これに関しては、以下のやつかな。

Thread#setUncaughtExceptionHandler

(c) The King's Museum