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

クラスThreadGroup

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

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

    スレッドは、それ自体のスレッド・グループについての情報にアクセスすることを許可されていますが、そのスレッド・グループの親スレッド・グループまたはその他のスレッド・グループについての情報にアクセスすることはできません。

    導入されたバージョン:
    1.0
    • コンストラクタのサマリー

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

      すべてのメソッド インスタンス・メソッド 具象メソッド 非推奨のメソッド 
      修飾子と型 メソッド 説明
      int activeCount()
      このスレッド・グループとそのサブグループに含まれるアクティブ・スレッドのおおよその数を返します。
      int activeGroupCount()
      このスレッド・グループとそのサブグループに含まれるアクティブ・グループのおおよその数を返します。
      boolean allowThreadSuspension​(boolean b)
      非推奨。
      この呼出しの定義は、非推奨のsuspend()に依存します。
      void checkAccess()
      現在実行中のスレッドがこのスレッド・グループを変更するアクセス権を持っているかどうかを判定します。
      void destroy()
      このスレッド・グループとそのサブグループのすべてを破棄します。
      int enumerate​(Thread[] list)
      このスレッド・グループとそのサブグループ内の各アクティブ・スレッドを、指定された配列にコピーします。
      int enumerate​(Thread[] list, boolean recurse)
      このスレッド・グループ内の各アクティブ・スレッドを、指定された配列にコピーします。
      int enumerate​(ThreadGroup[] list)
      このスレッド・グループとそのサブグループに含まれる各アクティブ・サブグループへの参照を、指定された配列にコピーします。
      int enumerate​(ThreadGroup[] list, boolean recurse)
      このスレッド・グループ内の各アクティブ・サブグループへの参照を、指定された配列にコピーします。
      int getMaxPriority()
      このスレッド・グループの最高優先順位を返します。
      String getName()
      このスレッド・グループの名前を返します。
      ThreadGroup getParent()
      このスレッド・グループの親を返します。
      void interrupt()
      このスレッド・グループ内のすべてのスレッドに割り込みます。
      boolean isDaemon()
      このスレッド・グループがデーモン・スレッド・グループであるかどうかを判定します。
      boolean isDestroyed()
      このスレッド・グループが破棄されたかどうかを判定します。
      void list()
      このスレッド・グループについての情報を標準出力に出力します。
      boolean parentOf​(ThreadGroup g)
      このスレッド・グループがスレッドグループ引数であるか、あるいはその祖先スレッド・グループの内の1つであるかどうかを判定します。
      void resume()
      非推奨。
      このメソッドはThread.suspendおよびThreadGroup.suspendとの組合せでのみ使用されますが、これらはどちらも本質的にデッドロックを発生させやすいため推奨されていません。
      void setDaemon​(boolean daemon)
      このスレッド・グループのデーモンの状態を変更します。
      void setMaxPriority​(int pri)
      グループの最高優先順位を設定します。
      void stop()
      非推奨。
      このメソッドは本質的に安全ではありません。
      void suspend()
      非推奨。
      このメソッドは本質的にデッドロックを発生させやすくなっています。
      String toString()
      このスレッド・グループの文字列表現を返します。
      void uncaughtException​(Thread t, Throwable e)
      このスレッド・グループ内のスレッドが、キャッチされていない例外のために停止し、スレッドに固有のThread.UncaughtExceptionHandlerが備えられていないときに、Java仮想マシンによって呼び出されます。
    • コンストラクタの詳細

      • ThreadGroup

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

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

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

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

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

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

      • getName

        public final String getName()
        このスレッド・グループの名前を返します。
        戻り値:
        このスレッド・グループの名前。
        導入されたバージョン:
        1.0
      • getParent

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

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

        戻り値:
        このスレッド・グループの親。 親がnullであるスレッド・グループは、トップ・レベルのスレッド・グループのみ。
        例外:
        SecurityException - 現在のスレッドがこのスレッド・グループを変更できない場合。
        導入されたバージョン:
        1.0
        関連項目:
        checkAccess(), SecurityException, RuntimePermission
      • getMaxPriority

        public final int getMaxPriority()
        このスレッド・グループの最高優先順位を返します。 このグループの一部であるスレッドに、最高優先順位より高い優先順位を指定することはできません。
        戻り値:
        このスレッド・グループ内のスレッドに指定できる最高優先順位。
        導入されたバージョン:
        1.0
        関連項目:
        setMaxPriority(int)
      • isDaemon

        public final boolean isDaemon()
        このスレッド・グループがデーモン・スレッド・グループであるかどうかを判定します。 デーモン・スレッド・グループは、その最後のスレッドが停止する場合、またはその最後のスレッド・グループが破棄される場合に自動的に破棄されます。
        戻り値:
        このスレッド・グループがデーモン・スレッド・グループである場合はtrue、そうでない場合はfalse
        導入されたバージョン:
        1.0
      • isDestroyed

        public boolean isDestroyed()
        このスレッド・グループが破棄されたかどうかを判定します。
        戻り値:
        このオブジェクトが破棄されている場合はtrue
        導入されたバージョン:
        1.1
      • setDaemon

        public final void setDaemon​(boolean daemon)
        このスレッド・グループのデーモンの状態を変更します。

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

        デーモン・スレッド・グループは、その最後のスレッドが停止する場合、またはその最後のスレッド・グループが破棄される場合に自動的に破棄されます。

        パラメータ:
        daemon - trueの場合は、このスレッド・グループをデーモン・スレッド・グループとしてマークし、そうでない場合は、このスレッド・グループを一般のものとしてマークする。
        例外:
        SecurityException - 現在のスレッドがこのスレッド・グループを変更できない場合。
        導入されたバージョン:
        1.0
        関連項目:
        SecurityException, checkAccess()
      • setMaxPriority

        public final void setMaxPriority​(int pri)
        グループの最高優先順位を設定します。 すでにさらに高い優先順位が指定されているスレッド・グループ内のスレッドは影響を受けません。

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

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

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

        パラメータ:
        pri - スレッド・グループの新しい優先順位。
        例外:
        SecurityException - 現在のスレッドがこのスレッド・グループを変更できない場合。
        導入されたバージョン:
        1.0
        関連項目:
        getMaxPriority()SecurityException, checkAccess()
      • parentOf

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

        public final void checkAccess()
        現在実行中のスレッドがこのスレッド・グループを変更するアクセス権を持っているかどうかを判定します。

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

        例外:
        SecurityException - 現在のスレッドがこのスレッド・グループへのアクセスを許されていない場合。
        導入されたバージョン:
        1.0
        関連項目:
        SecurityManager.checkAccess(java.lang.ThreadGroup)
      • activeCount

        public int activeCount()
        このスレッド・グループとそのサブグループに含まれるアクティブ・スレッドのおおよその数を返します。 このスレッド・グループ内のすべてのサブグループについて再帰的に反復します。

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

        戻り値:
        このスレッド・グループ内、またはこのスレッド・グループを上位に持つその他のスレッド・グループの内のアクティブ・スレッドのおよその数
        導入されたバージョン:
        1.0
      • enumerate

        public int enumerate​(Thread[] list)
        このスレッド・グループとそのサブグループ内の各アクティブ・スレッドを、指定された配列にコピーします。

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

        enumerate(list, true)

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

        public int enumerate​(Thread[] list,
                             boolean recurse)
        このスレッド・グループ内の各アクティブ・スレッドを、指定された配列にコピーします。 recursetrueの場合、このメソッドは再帰的にこのスレッド・グループのすべてのサブグループを列挙するので、それらのサブグループ内のすべてのアクティブ・スレッドへの参照も含められます。 配列が小さすぎてすべてのスレッドを保持できない場合、余分なスレッドは通知なしに無視されます。

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

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

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

        public int activeGroupCount()
        このスレッド・グループとそのサブグループに含まれるアクティブ・グループのおおよその数を返します。 このスレッド・グループ内のすべてのサブグループについて再帰的に反復します。

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

        戻り値:
        このスレッド・グループを祖先に持つアクティブ・スレッド・グループの数
        導入されたバージョン:
        1.0
      • enumerate

        public int enumerate​(ThreadGroup[] list)
        このスレッド・グループとそのサブグループに含まれる各アクティブ・サブグループへの参照を、指定された配列にコピーします。

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

        enumerate(list, true)

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

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

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

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

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

        @Deprecated(since="1.2")
        public final void stop()
        非推奨。
        このメソッドは本質的に安全ではありません。 詳細については、Thread.stop()を参照してください。
        このスレッド・グループ内のすべてのスレッドを停止します。

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

        次にこのメソッドは、このスレッド・グループとそのすべてのサブグループ内のすべてのスレッドについてstopメソッドを呼び出します。

        例外:
        SecurityException - 現在のスレッドが、このスレッド・グループまたはスレッド・グループ内のスレッドへのアクセスを許可されない場合。
        導入されたバージョン:
        1.0
        関連項目:
        SecurityExceptionThread.stop()checkAccess()
      • interrupt

        public final void interrupt()
        このスレッド・グループ内のすべてのスレッドに割り込みます。

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

        次にこのメソッドは、このスレッド・グループとそのすべてのサブグループ内のすべてのスレッドについてinterruptメソッドを呼び出します。

        例外:
        SecurityException - 現在のスレッドが、このスレッド・グループまたはスレッド・グループ内のスレッドへのアクセスを許可されない場合。
        導入されたバージョン:
        1.2
        関連項目:
        Thread.interrupt()SecurityException, checkAccess()
      • suspend

        @Deprecated(since="1.2")
        public final void suspend()
        非推奨。
        このメソッドは本質的にデッドロックを発生させやすくなっています。 詳細については、Thread.suspend()を参照してください。
        このスレッド・グループ内のすべてのスレッドを停止します。

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

        次にこのメソッドは、このスレッド・グループとそのすべてのサブグループ内のすべてのスレッドについてsuspendメソッドを呼び出します。

        例外:
        SecurityException - 現在のスレッドが、このスレッド・グループまたはスレッド・グループ内のスレッドへのアクセスを許可されない場合。
        導入されたバージョン:
        1.0
        関連項目:
        Thread.suspend()SecurityException, checkAccess()
      • resume

        @Deprecated(since="1.2")
        public final void resume()
        非推奨。
        このメソッドはThread.suspendおよびThreadGroup.suspendとの組合せでのみ使用されますが、これらはどちらも本質的にデッドロックを発生させやすいため推奨されていません。 詳細については、Thread.suspend()を参照してください。
        このスレッド・グループ内のすべてのスレッドを再開します。

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

        次にこのメソッドは、このスレッド・グループとそのすべてのサブグループ内のすべてのスレッドについてresumeメソッドを呼び出します。

        例外:
        SecurityException - 現在のスレッドが、このスレッド・グループまたはスレッド・グループ内のスレッドへのアクセスを許可されない場合。
        導入されたバージョン:
        1.0
        関連項目:
        SecurityExceptionThread.resume()checkAccess()
      • destroy

        public final void destroy()
        このスレッド・グループとそのサブグループのすべてを破棄します。 このスレッド・グループ内にあったすべてのスレッドが停止されていること、つまり、このスレッド・グループが空である必要があります。

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

        例外:
        IllegalThreadStateException - スレッド・グループが空ではない場合、またはスレッド・グループがすでに破棄されている場合。
        SecurityException - 現在のスレッドがこのスレッド・グループを変更できない場合。
        導入されたバージョン:
        1.0
        関連項目:
        checkAccess()
      • list

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

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

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

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

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

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

        @Deprecated(since="1.2")
        public boolean allowThreadSuspension​(boolean b)
        非推奨。
        この呼出しの定義は、非推奨のsuspend()に依存します。 また、この呼出しの動作は指定されません。
        メモリー不足による暗黙の中断を制御するためにVMによって使用されます。
        パラメータ:
        b - 中断を可能または不可にするboolean
        戻り値:
        成功した場合はtrue
        導入されたバージョン:
        1.1
      • toString

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