スレッドをすべて1つの(メイン)グループに含めるのではなく、スレッドグループに割り当てることの利点は何ですか?
10個以上の常にアクティブなスレッドがあり、アプリケーションが必要とするときに2つのスレッドが時々開始されると仮定すると、これらをグループ化するアプローチはどのようになりますか?
ありがとう、アダム。
スレッドをすべて1つの(メイン)グループに含めるのではなく、スレッドグループに割り当てることの利点は何ですか?
10個以上の常にアクティブなスレッドがあり、アプリケーションが必要とするときに2つのスレッドが時々開始されると仮定すると、これらをグループ化するアプローチはどのようになりますか?
ありがとう、アダム。
利点はまったくありません。スレッドグループは下位互換性のためにありますが、使用されているのを見たことがありません。
ブライアン・ゲッツ(Java Concurrency in Practiceの著者-聖書)がずっと前に彼らについて言ったことは次のとおりです。
ThreadGroupクラスは元々、スレッドのコレクションをグループに構造化するのに役立つことを目的としていました。ただし、ThreadGroupはそれほど有用ではないことがわかりました。スレッドで同等のメソッドを使用する方がよいでしょう。ThreadGroupは、スレッドには(まだ)存在しない1つの便利な機能、uncaughtException()メソッドを提供します。キャッチされなかった例外をスローしたためにスレッドグループ内のスレッドが終了すると、ThreadGroup.uncaughtException()メソッドが呼び出されます。これにより、システムをシャットダウンしたり、ログファイルにメッセージを書き込んだり、失敗したサービスを再起動したりすることができます。
スレッドにuncauht例外ハンドラーが追加され、スレッドグループを使用するこの単一の理由は無効になりました。