0

スレッドをすべて1つの(メイン)グループに含めるのではなく、スレッドグループに割り当てることの利点は何ですか?

10個以上の常にアクティブなスレッドがあり、アプリケーションが必要とするときに2つのスレッドが時々開始されると仮定すると、これらをグループ化するアプローチはどのようになりますか?

ありがとう、アダム。

4

1 に答える 1

3

利点はまったくありません。スレッドグループは下位互換性のためにありますが、使用されているのを見たことがありません。

ブライアン・ゲッツ(Java Concurrency in Practiceの著者-聖書)がずっと前に彼らについて言ったことは次のとおりです。

ThreadGroupクラスは元々、スレッドのコレクションをグループに構造化するのに役立つことを目的としていました。ただし、ThreadGroupはそれほど有用ではないことがわかりました。スレッドで同等のメソッドを使用する方がよいでしょう。ThreadGroupは、スレッドには(まだ)存在しない1つの便利な機能、uncaughtException()メソッドを提供します。キャッチされなかった例外をスローしたためにスレッドグループ内のスレッドが終了すると、ThreadGroup.uncaughtException()メソッドが呼び出されます。これにより、システムをシャットダウンしたり、ログファイルにメッセージを書き込んだり、失敗したサービスを再起動したりすることができます。

スレッドにuncauht例外ハンドラーが追加され、スレッドグループを使用するこの単一の理由は無効になりました。

于 2012-07-03T11:24:20.353 に答える