2012-04-07 15 views
2

スレッドを正常にシャットダウンしたい。私はインターネット上で多くのコードを見て、ここでクエリを持っています。 シャットダウンには2つの方法があると思います。Javaでスレッドを中断する

  1. ブール型フラグを使用します。ひとたびフラグを立てば、runメソッドでコードを破ることができます。
  2. 割り込み方法の使用。

なぜ私はスレッドを正常にシャットダウンするためにブールフラグを使用することは避けられますか?私はサンプルプログラムを実行するとうまくいったのです。

答えて

5

booleanフラグと間違って何もしかし、ありません:

  • あなたは同期/可視性について覚えておく必要があります(少なくともフラグにvolatileを置く)

  • が時に1つの余分なフラグを追加する理由既に実装されています(interrupted)?

  • 他のライブラリ/コンテナは、あなたのスレッドを中断しようとするかもしれません(結局、彼らはあなたの旗のことは知らない!)ので、あなたはまだInterruptedExceptionおよび/またはisInterrupted()フラグをサポートする必要が

  • できるスレッドを中断また、I/OコールとThread.sleep()を中断します。カスタムフラグはできません

関連する問題