ピコラボで有志により開かれている読書会の議事録を以下ご紹介します。ご興味ありましたら、「お問い合わせ」フォームで気軽にコメントなど頂けると幸いです(なお、議事録の議論内容等は各参加者個人の意見であり、会社の意見ではない点、ご了承ください)。

読書会情報

  • 書籍
    • 増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編
  • 発表対象
    • Chapter 10

質問・議論

interrupt について

  • 質問: interrupt は何をしているのか?
  • 回答: sleep している場合にもすぐに停止させるため
  • 質問: 無くてもよい?
  • 回答: このプログラムではすぐには止まらなくなる

Thread.stop について

  • 質問: Thread.stop は deprecated になっている?
  • 回答: なっている

キャッチされない例外のハンドラについて

  • 質問: Handler はどのスレッドで動いているのか
  • 回答: (コードを書いて確認)
  • (続): uncaught: MyThread
  • (続): shutdown: 別 thread
  • 質問: ハンドラの中で例外を投げたらどうなるのか
  • 回答: (コードを書いて確認)
  • (続): ハンドラに再帰的に来ることはない
  • 質問: setDefaultUncaughtExceptionHandler は複数設定できないのか
  • 回答: (コードを書いて確認)
  • 質問: shutdown handler の中で例外がおきたら
  • 回答: uncaught が呼ばれる

終了処理の状態について

  • 質問: 状態管理について説明してほしい
  • 回答: 作業中, 終了要求が出された, 終了処理中, 終了した
  • 意見: 系の全体を見ると 4 状態だが各々のスレッドの立場では 3 状態に見えるのでは
  • (続): クライアントの立場では終了要求を出したかどうか
  • (続): ワーカースレッド側の立場では作業中か終了処理中か
  • 議論: ExecutorService を使う場合は shudown メソッドの呼び出しが終了要求にあたる
  • (続): shutdown が呼び出されると新規の要求を受け付けなくなる
  • (続): 処理中や待ち状態のタスクをキャンセルして終了するメソッドもある (shutdownNow)