モジュール java.base
パッケージ java.lang

クラスThreadGroup

java.lang.Object
java.lang.ThreadGroup
すべての実装されたインタフェース:
Thread.UncaughtExceptionHandler

public class ThreadGroup extends Object implements Thread.UncaughtExceptionHandler
スレッド・グループは、スレッドの集合を表します。 さらに、スレッド・グループにはほかのスレッド・グループが含まれることもあります。 スレッド・グループはツリーを形成し、最初のスレッド・グループを除いてその中で親を持ちます。

スレッド・グループには名前と最大の優先順位があります。 名前はグループの作成時に指定され、変更できません。 グループの最大優先度は、グループ内で作成されたスレッドの最大優先度です。 最初は親スレッド・グループから継承されますが、setMaxPriorityメソッドを使用して変更できます。

スレッド・グループは親グループから弱い到達可能であるため、グループ内にliveスレッドがなく、それ以外のスレッド・グループがunreachableの場合にガベージ・コレクションの対象となります。

特に指定しないかぎり、このクラスのコンストラクタまたはメソッドにnull引数を渡すと、NullPointerExceptionがスローされます。

スレッド・グループと仮想スレッド

Javaランタイムにより、「仮想スレッド」の特別なスレッド・グループが作成されます。 このグループは、仮想スレッドで呼び出されたときにThread.getThreadGroupメソッドによって返されます。 スレッド・グループは、その最大優先度が固定されており、setMaxPriorityメソッドでは変更できません。 仮想スレッドは、activeCountメソッドによって返される推定スレッド数に含まれず、enumerateメソッドによって列挙されず、interruptメソッドによって中断されません。
APIのノート:
スレッド・グループは、以前のJavaリリースでスレッドをグループ化する方法を提供し、スレッドに対して「ジョブ制御」という形式を提供します。 スレッド・グループは、診断を目的としたアプレットおよび定義されたメソッドの分離をサポートしていました。 新しいアプリケーションでThreadGroupsを作成し、このAPIと対話することはまれです。
導入されたバージョン:
1.0
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    新しいスレッド・グループを構築します。
    新しいスレッド・グループを作成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    int
    このスレッド・グループおよびそのサブグループ内のliveプラットフォーム・スレッド数の見積りを返します。
    int
    このスレッド・グループおよびそのサブグループ内のグループ数の見積りを返します。
    final void
    非推奨、削除予定: このAPI要素は将来のバージョンで削除予定です。
    このメソッドは、非推奨であり、今後のリリースで削除される可能性があります。「セキュリティ・マネージャ」と組み合わせて使用すると便利です。
    final void
    非推奨、削除予定: このAPI要素は将来のバージョンで削除予定です。
    このメソッドは元々、空のスレッド・グループを破棄するように指定されました。
    int
    enumerate(Thread[] list)
    このスレッド・グループおよびそのサブグループ内のすべてのliveプラットフォーム・スレッドに指定された配列にコピーします。
    int
    enumerate(Thread[] list, boolean recurse)
    このスレッド・グループ内のすべてのliveプラットフォーム・スレッドに指定された配列にコピーします。
    int
    指定された配列参照を、このスレッド・グループおよびそのサブグループ内のすべてのサブグループにコピーします。
    int
    enumerate(ThreadGroup[] list, boolean recurse)
    指定された配列参照をこのスレッド・グループ内のすべてのサブグループにコピーします。
    final int
    このスレッド・グループの最高優先順位を返します。
    final String
    このスレッド・グループの名前を返します。
    このスレッド・グループの親を返します。
    final void
    このスレッド・グループおよびそのサブグループ内のすべてのliveプラットフォーム・スレッドを中断します。
    final boolean
    非推奨、削除予定: このAPI要素は将来のバージョンで削除予定です。
    このメソッドは元々、スレッド・グループが最後のスレッドが終了したときに自動的に破棄される「デーモン・スレッド・グループ」であるかどうかを示していました。
    boolean
    非推奨、削除予定: このAPI要素は将来のバージョンで削除予定です。
    このメソッドはもともと、スレッド・グループが破棄されるかどうかを示していました。
    void
    このスレッド・グループについての情報を標準出力に出力します。
    final boolean
    このスレッド・グループがスレッドグループ引数であるか、あるいはその祖先スレッド・グループの内の1つであるかどうかを判定します。
    final void
    非推奨、削除予定: このAPI要素は将来のバージョンで削除予定です。
    このメソッドは元々、スレッド・グループ内のすべてのスレッドを再開するように指定されました。
    final void
    setDaemon(boolean daemon)
    非推奨、削除予定: このAPI要素は将来のバージョンで削除予定です。
    このメソッドは、スレッド・グループが、最後のスレッドが終了したときに自動的に破棄される「デーモン・スレッド・グループ」かどうかを構成していました。
    final void
    setMaxPriority(int pri)
    グループの最高優先順位を設定します。
    final void
    非推奨、削除予定: このAPI要素は将来のバージョンで削除予定です。
    このメソッドは元々、スレッド・グループ内のすべてのスレッドを停止するように指定されました。
    final void
    非推奨、削除予定: このAPI要素は将来のバージョンで削除予定です。
    このメソッドは元々、スレッド・グループ内のすべてのスレッドを一時停止するように指定されました。
    このスレッド・グループの文字列表現を返します。
    void
    このスレッド・グループ内のスレッドが、キャッチされていない例外のために停止し、スレッドに固有のThread.UncaughtExceptionHandlerが備えられていないときに、Java仮想マシンによって呼び出されます。

    クラスjava.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • コンストラクタの詳細

    • ThreadGroup

      public ThreadGroup(String name)
      新しいスレッド・グループを構築します。 この新しいグループの親が、現在実行中のスレッドのスレッド・グループです。

      親スレッド・グループのcheckAccessメソッドは、引数なしで呼び出されます。この結果、セキュリティ例外が発生することがあります。

      パラメータ:
      name - 新しいスレッド・グループの名前(null)
      例外:
      SecurityException - 現在のスレッドが、指定されたスレッド・グループ内のスレッドを作成できない場合。
      関連項目:
    • ThreadGroup

      public ThreadGroup(ThreadGroup parent, String name)
      新しいスレッド・グループを作成します。 この新しいグループの親が、指定されたスレッド・グループです。

      親スレッド・グループのcheckAccessメソッドは、引数なしで呼び出されます。この結果、セキュリティ例外が発生することがあります。

      パラメータ:
      parent - 親のスレッド・グループ。
      name - 新しいスレッド・グループの名前(null)
      例外:
      SecurityException - 現在のスレッドが、指定されたスレッド・グループ内のスレッドを作成できない場合。
      関連項目:
  • メソッドの詳細

    • getName

      public final String getName()
      このスレッド・グループの名前を返します。
      戻り値:
      このスレッド・グループの名前はnullです
    • getParent

      public final ThreadGroup getParent()
      このスレッド・グループの親を返します。

      親がnullでない場合、最初に親スレッド・グループのcheckAccessメソッドが引数なしで呼び出されます。この結果、セキュリティ例外がスローされることがあります。

      戻り値:
      このスレッド・グループの親。 親がnullであるスレッド・グループは、トップ・レベルのスレッド・グループのみ。
      例外:
      SecurityException - 現在のスレッドがこのスレッド・グループを変更できない場合。
      関連項目:
    • getMaxPriority

      public final int getMaxPriority()
      このスレッド・グループの最高優先順位を返します。 これは、スレッド・グループに作成された新しいスレッドの最大優先度です。
      戻り値:
      スレッド・グループに作成された新しいスレッドの最大優先度
      関連項目:
    • isDaemon

      @Deprecated(since="16", forRemoval=true) public final boolean isDaemon()
      非推奨、削除予定: このAPI要素は将来のバージョンで削除予定です。
      このメソッドは元々、スレッド・グループが最後のスレッドが終了したときに自動的に破棄される「デーモン・スレッド・グループ」であるかどうかを示していました。 デーモン・スレッド・グループの概念はすでに存在しません。 スレッド・グループは、グループ内にライブ・スレッドがなく、それ以外にアクセスできない場合にGCの対象となります。
      このスレッド・グループのデーモン・ステータスを返します。 デーモンのステータスは何にも使用されません。
      戻り値:
      このスレッド・グループのデーモン・ステータス
    • isDestroyed

      @Deprecated(since="16", forRemoval=true) public boolean isDestroyed()
      非推奨、削除予定: このAPI要素は将来のバージョンで削除予定です。
      このメソッドはもともと、スレッド・グループが破棄されるかどうかを示していました。 スレッド・グループを破棄する機能と破棄されたスレッド・グループの概念は存在しません。 スレッド・グループは、グループ内にライブ・スレッドがなく、それ以外にアクセスできない場合にGCの対象となります。
      falseを返します。
      戻り値:
      false
      導入されたバージョン:
      1.1
    • setDaemon

      @Deprecated(since="16", forRemoval=true) public final void setDaemon(boolean daemon)
      非推奨、削除予定: このAPI要素は将来のバージョンで削除予定です。
      このメソッドは、スレッド・グループが、最後のスレッドが終了したときに自動的に破棄される「デーモン・スレッド・グループ」かどうかを構成していました。 デーモン・スレッド・グループの概念はすでに存在しません。 スレッド・グループは、グループ内にライブ・スレッドがなく、それ以外にアクセスできない場合にGCの対象となります。
      このスレッド・グループのデーモン・ステータスを設定します。 デーモンのステータスは何にも使用されません。

      まず、このスレッド・グループのcheckAccessメソッドが引数なしで呼び出されます。この結果、セキュリティ例外がスローされることがあります。

      パラメータ:
      daemon - デーモンのステータス
      例外:
      SecurityException - 現在のスレッドがこのスレッド・グループを変更できない場合。
      関連項目:
    • setMaxPriority

      public final void setMaxPriority(int pri)
      グループの最高優先順位を設定します。 このメソッド(新しい優先度は無視されます)では、仮想スレッドの場合はThreadGroupの最大優先度は変更されません。 すでに高い優先度を持つスレッド・グループ(またはサブグループ)のスレッドは、このメソッドの影響を受けません。

      まず、このスレッド・グループのcheckAccessメソッドが引数なしで呼び出されます。この結果、セキュリティ例外がスローされることがあります。

      pri引数の値がThread.MIN_PRIORITYより小さいか、Thread.MAX_PRIORITYより大きい場合、グループの最大優先順位は変更されません。

      それ以外の場合、このThreadGroupオブジェクトの優先順位は、指定されたpriおよびこのスレッド・グループの親に許可される最高優先順位より低く設定されます。 (このスレッド・グループが、親を持たないシステム・スレッド・グループの場合、その最高優先順位はpriだけに設定される。) その後、このスレッド・グループに属するスレッド・グループごとに、このメソッドがpriを引数として再帰的に呼び出されます。

      パラメータ:
      pri - スレッド・グループの新しい優先順位。
      例外:
      SecurityException - 現在のスレッドがこのスレッド・グループを変更できない場合。
      関連項目:
    • parentOf

      public final boolean parentOf(ThreadGroup g)
      このスレッド・グループがスレッドグループ引数であるか、あるいはその祖先スレッド・グループの内の1つであるかどうかを判定します。
      パラメータ:
      g - スレッド・グループ(null)
      戻り値:
      このスレッド・グループがスレッドグループ引数であるか、またはその祖先スレッド・グループの内の1つである場合はtrue、そうでない場合はfalse
    • checkAccess

      @Deprecated(since="17", forRemoval=true) public final void checkAccess()
      非推奨、削除予定: このAPI要素は将来のバージョンで削除予定です。
      このメソッドは、非推奨であり、今後のリリースで削除される可能性があります。「セキュリティ・マネージャ」と組み合わせて使用すると便利です。 そのため、このメソッドは非推奨であり、削除される可能性があります。 Security Managerまたはこのメソッドに置換はありません。
      現在実行中のスレッドがこのスレッド・グループを変更するアクセス権を持っているかどうかを判定します。

      セキュリティ・マネージャが存在する場合、このグループがその引数として指定され、そのcheckAccessメソッドが呼び出されます。 その結果、SecurityExceptionがスローされることがあります。

      例外:
      SecurityException - 現在のスレッドがこのスレッド・グループへのアクセスを許されていない場合。
      関連項目:
    • activeCount

      public int activeCount()
      このスレッド・グループおよびそのサブグループ内のliveプラットフォーム・スレッド数の見積りを返します。 仮想スレッドは見積りに含まれていません。 このメソッドは、このスレッド・グループ内のすべてのサブグループに対して再帰的に反復します。

      返される値は単なる推定値ですが、それは、このメソッドが内部のデータ構造体をトラバースしている間にスレッド数が動的に変化する可能性があるほか、特定のシステム・スレッドの存在の影響を受ける可能性もあるからです。 このメソッドは主に、デバッグおよび監視目的のためのものです。

      戻り値:
      このスレッド・グループおよびこのスレッド・グループを祖先とするその他のスレッド・グループ内のライブ・スレッド数の見積り
    • enumerate

      public int enumerate(Thread[] list)
      このスレッド・グループおよびそのサブグループ内のすべてのliveプラットフォーム・スレッドに指定された配列にコピーします。 仮想スレッドはこのメソッドによって列挙されません。

      このメソッド呼出しの動作は、次の呼出しの動作とまったく同一です。

      enumerate(list, true)

      パラメータ:
      list - スレッドのリストの格納先である配列
      戻り値:
      配列に格納されるスレッド数
      例外:
      SecurityException - 現在のスレッドはこのスレッド・グループにアクセスできないとcheckAccessによって判定された場合
    • enumerate

      public int enumerate(Thread[] list, boolean recurse)
      このスレッド・グループ内のすべてのliveプラットフォーム・スレッドに指定された配列にコピーします。 仮想スレッドはこのメソッドによって列挙されません。 recursetrueの場合、このメソッドは、このスレッド・グループのすべてのサブグループを再帰的に列挙し、これらのサブグループ内のすべてのライブ・プラットフォーム・スレッドへの参照も含みます。 配列が小さすぎてすべてのスレッドを保持できない場合、余分なスレッドは通知なしに無視されます。

      アプリケーションでは、配列がどの程度の大きさになるかについておよその数を取得するためにactiveCountメソッドを使用する場合があります。ただし、配列が小さすぎてすべてのスレッドを保持できない場合、余分なスレッドは通知なしに無視されます。 このスレッド・グループ内のすべてのライブ・スレッドを取得することが重要である場合、コール元は、返されるint値が厳密にlistの長さより小さいことを確認する必要があります。

      このメソッドの本質的な競合条件のため、このメソッドはデバッグおよび監視目的にのみ使用することをお薦めします。

      パラメータ:
      list - スレッドのリストの格納先である配列
      recurse - trueの場合、このスレッド・グループのすべてのサブグループを再帰的に列挙する
      戻り値:
      配列に格納されるスレッド数
      例外:
      SecurityException - 現在のスレッドはこのスレッド・グループにアクセスできないとcheckAccessによって判定された場合
    • activeGroupCount

      public int activeGroupCount()
      このスレッド・グループおよびそのサブグループ内のグループ数の見積りを返します。 このスレッド・グループ内のすべてのサブグループについて再帰的に反復します。

      このメソッドが内部のデータ構造をトラバースしている間にも、スレッド・グループ数が動的に変化する場合があるため、返される値は推定に過ぎません。 このメソッドは主に、デバッグおよび監視目的のためのものです。

      戻り値:
      このスレッド・グループを祖先とするスレッド・グループの数
    • enumerate

      public int enumerate(ThreadGroup[] list)
      指定された配列参照を、このスレッド・グループおよびそのサブグループ内のすべてのサブグループにコピーします。

      このメソッド呼出しの動作は、次の呼出しの動作とまったく同一です。

      enumerate(list, true)

      パラメータ:
      list - スレッド・グループのリストの格納先である配列
      戻り値:
      配列に格納されるスレッド・グループ数
      例外:
      SecurityException - 現在のスレッドはこのスレッド・グループにアクセスできないとcheckAccessによって判定された場合
    • enumerate

      public int enumerate(ThreadGroup[] list, boolean recurse)
      指定された配列参照をこのスレッド・グループ内のすべてのサブグループにコピーします。 recursetrueの場合、このメソッドではこのスレッド・グループのすべてのサブグループが再帰的に列挙され、これらのサブグループ内のすべてのスレッド・グループへの参照も含まれます。

      アプリケーションでは、配列がどの程度の大きさになるかについておよその数を取得するためにactiveGroupCountメソッドを使用する場合があります。ただし、配列が小さすぎてすべてのスレッド・グループを保持できない場合、余分なスレッド・グループは通知なしに無視されます。 このスレッド・グループ内のすべてのサブグループを取得することが重要な場合、コール元は、返されるint値が厳密にlistの長さより小さいことを確認する必要があります。

      このメソッドの本質的な競合条件のため、このメソッドはデバッグおよび監視目的にのみ使用することをお薦めします。

      パラメータ:
      list - スレッド・グループのリストの格納先である配列
      recurse - trueの場合、すべてのサブグループを再帰的に列挙する
      戻り値:
      配列に格納されるスレッド・グループ数
      例外:
      SecurityException - 現在のスレッドはこのスレッド・グループにアクセスできないとcheckAccessによって判定された場合
    • stop

      @Deprecated(since="1.2", forRemoval=true) public final void stop()
      非推奨、削除予定: このAPI要素は将来のバージョンで削除予定です。
      このメソッドは元々、スレッド・グループ内のすべてのスレッドを停止するように指定されました。 本来は安全ではありません。
      UnsupportedOperationExceptionをスローします。
    • interrupt

      public final void interrupt()
      このスレッド・グループおよびそのサブグループ内のすべてのliveプラットフォーム・スレッドを中断します。
      例外:
      SecurityException - 現在のスレッドが、このスレッド・グループまたはスレッド・グループ内のスレッドへのアクセスを許可されない場合。
      導入されたバージョン:
      1.2
      関連項目:
    • suspend

      @Deprecated(since="1.2", forRemoval=true) public final void suspend()
      非推奨、削除予定: このAPI要素は将来のバージョンで削除予定です。
      このメソッドは元々、スレッド・グループ内のすべてのスレッドを一時停止するように指定されました。
      UnsupportedOperationExceptionをスローします。
    • resume

      @Deprecated(since="1.2", forRemoval=true) public final void resume()
      非推奨、削除予定: このAPI要素は将来のバージョンで削除予定です。
      このメソッドは元々、スレッド・グループ内のすべてのスレッドを再開するように指定されました。
      UnsupportedOperationExceptionをスローします。
    • destroy

      @Deprecated(since="16", forRemoval=true) public final void destroy()
      非推奨、削除予定: このAPI要素は将来のバージョンで削除予定です。
      このメソッドは元々、空のスレッド・グループを破棄するように指定されました。 スレッド・グループを明示的に破棄する機能は存在しません。 スレッド・グループは、グループ内にライブ・スレッドがなく、それ以外にアクセスできない場合にGCの対象となります。
      何も行いません。
    • list

      public void list()
      このスレッド・グループについての情報を標準出力に出力します。 このメソッドはデバッグの場合にだけ役立ちます。
    • uncaughtException

      public void uncaughtException(Thread t, Throwable e)
      このスレッド・グループ内のスレッドが、キャッチされていない例外のために停止し、スレッドに固有のThread.UncaughtExceptionHandlerが備えられていないときに、Java仮想マシンによって呼び出されます。

      ThreadGroupuncaughtExceptionメソッドは次の処理を行います。

      • このスレッド・グループに親スレッド・グループがある場合、その親のuncaughtExceptionメソッドは同じ2つの引数が指定されて呼び出されます。
      • そうでない場合、このメソッドはデフォルトのキャッチされない例外のハンドラが備えられているかどうかをチェックする。備えられている場合は、同じ2つの引数を使ってuncaughtExceptionメソッドが呼び出されます。
      • それ以外の場合、スレッドのgetNameメソッドから返されるスレッド名と、ThrowableprintStackTraceメソッドによるスタック・バックトレースとを含むメッセージが、標準エラー・ストリームに出力されます。

      アプリケーションは、ThreadGroupのサブクラスでこのメソッドをオーバーライドして、キャッチされていない例外を別の方法で処理できます。

      定義:
      uncaughtException、インタフェースThread.UncaughtExceptionHandler
      パラメータ:
      t - 終了しようとしているスレッド。
      e - キャッチされていない例外。
    • toString

      public String toString()
      このスレッド・グループの文字列表現を返します。
      オーバーライド:
      toString、クラスObject
      戻り値:
      このスレッド・グループの文字列表現