- すべての実装されたインタフェース:
Thread.UncaughtExceptionHandler
スレッド・グループには名前と最大の優先順位があります。 名前はグループの作成時に指定され、変更できません。 グループの最大優先度は、グループ内で作成されたスレッドの最大優先度です。 最初は親スレッド・グループから継承されますが、setMaxPriority
メソッドを使用して変更できます。
スレッド・グループは親グループから弱い「到達可能」であるため、グループ内にliveスレッドがなく、それ以外のスレッド・グループがunreachableの場合にガベージ・コレクションの対象となります。
特に指定しないかぎり、このクラスのコンストラクタまたはメソッドにnull
引数を渡すと、NullPointerException
がスローされます。
スレッド・グループと仮想スレッド
Javaランタイムにより、「仮想スレッド」の特別なスレッド・グループが作成されます。 このグループは、仮想スレッドで呼び出されたときにThread.getThreadGroup
メソッドによって返されます。 スレッド・グループは、その最大優先度が固定されており、setMaxPriority
メソッドでは変更できません。 仮想スレッドは、activeCount
メソッドによって返される推定スレッド数に含まれず、enumerate
メソッドによって列挙されず、interrupt
メソッドによって中断されません。 - APIのノート:
- スレッド・グループは、以前のJavaリリースでスレッドをグループ化する方法を提供し、スレッドに対して「ジョブ制御」という形式を提供します。 スレッド・グループは、診断を目的としたアプレットおよび定義されたメソッドの分離をサポートしていました。 新しいアプリケーションでThreadGroupsを作成し、このAPIと対話することはまれです。
- 導入されたバージョン:
- 1.0
-
コンストラクタのサマリー
コンストラクタ説明ThreadGroup
(String name) 新しいスレッド・グループを構築します。ThreadGroup
(ThreadGroup parent, String name) 新しいスレッド・グループを作成します。 -
メソッドのサマリー
修飾子と型メソッド説明int
このスレッド・グループおよびそのサブグループ内のliveプラットフォーム・スレッド数の見積りを返します。int
このスレッド・グループおよびそのサブグループ内のグループ数の見積りを返します。boolean
allowThreadSuspension
(boolean b) 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このメソッドはもともと低メモリー状態でのサスペンションの制御を目的としたものです。final void
削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このメソッドは、非推奨であり、今後のリリースで削除される可能性があります。「セキュリティ・マネージャ」と組み合わせて使用すると便利です。final void
destroy()
削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このメソッドは元々、空のスレッド・グループを破棄するように指定されました。int
このスレッド・グループおよびそのサブグループ内のすべてのliveプラットフォーム・スレッドに指定された配列にコピーします。int
このスレッド・グループ内のすべてのliveプラットフォーム・スレッドに指定された配列にコピーします。int
enumerate
(ThreadGroup[] list) 指定された配列参照を、このスレッド・グループおよびそのサブグループ内のすべてのサブグループにコピーします。int
enumerate
(ThreadGroup[] list, boolean recurse) 指定された配列参照をこのスレッド・グループ内のすべてのサブグループにコピーします。final int
このスレッド・グループの最高優先順位を返します。final String
getName()
このスレッド・グループの名前を返します。final ThreadGroup
このスレッド・グループの親を返します。final void
このスレッド・グループおよびそのサブグループ内のすべてのliveプラットフォーム・スレッドを中断します。final boolean
isDaemon()
削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このメソッドは元々、スレッド・グループが最後のスレッドが終了したときに自動的に破棄される「デーモン・スレッド・グループ」であるかどうかを示していました。boolean
削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このメソッドはもともと、スレッド・グループが破棄されるかどうかを示していました。void
list()
このスレッド・グループについての情報を標準出力に出力します。final boolean
このスレッド・グループがスレッドグループ引数であるか、あるいはその祖先スレッド・グループの内の1つであるかどうかを判定します。final void
resume()
削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このメソッドは元々、スレッド・グループ内のすべてのスレッドを再開するように指定されました。final void
setDaemon
(boolean daemon) 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このメソッドは、スレッド・グループが、最後のスレッドが終了したときに自動的に破棄される「デーモン・スレッド・グループ」かどうかを構成していました。final void
setMaxPriority
(int pri) グループの最高優先順位を設定します。final void
stop()
削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このメソッドは元々、スレッド・グループ内のすべてのスレッドを停止するように指定されました。final void
suspend()
削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このメソッドは元々、スレッド・グループ内のすべてのスレッドを一時停止するように指定されました。toString()
このスレッド・グループの文字列表現を返します。void
uncaughtException
(Thread t, Throwable e) このスレッド・グループ内のスレッドが、キャッチされていない例外のために停止し、スレッドに固有のThread.UncaughtExceptionHandler
が備えられていないときに、Java仮想マシンによって呼び出されます。
-
コンストラクタの詳細
-
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プラットフォーム・スレッドに指定された配列にコピーします。 仮想スレッドはこのメソッドによって列挙されません。recurse
がtrue
の場合、このメソッドは、このスレッド・グループのすべてのサブグループを再帰的に列挙し、これらのサブグループ内のすべてのライブ・プラットフォーム・スレッドへの参照も含みます。 配列が小さすぎてすべてのスレッドを保持できない場合、余分なスレッドは通知なしに無視されます。アプリケーションでは、配列がどの程度の大きさになるかについておよその数を取得するために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) 指定された配列参照をこのスレッド・グループ内のすべてのサブグループにコピーします。recurse
がtrue
の場合、このメソッドではこのスレッド・グループのすべてのサブグループが再帰的に列挙され、これらのサブグループ内のすべてのスレッド・グループへの参照も含まれます。アプリケーションでは、配列がどの程度の大きさになるかについておよその数を取得するために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
このスレッド・グループ内のスレッドが、キャッチされていない例外のために停止し、スレッドに固有のThread.UncaughtExceptionHandler
が備えられていないときに、Java仮想マシンによって呼び出されます。ThreadGroup
のuncaughtException
メソッドは次の処理を行います。- このスレッド・グループに親スレッド・グループがある場合、その親の
uncaughtException
メソッドは同じ2つの引数が指定されて呼び出されます。 - そうでない場合、このメソッドはデフォルトのキャッチされない例外のハンドラが備えられているかどうかをチェックする。備えられている場合は、同じ2つの引数を使って
uncaughtException
メソッドが呼び出されます。 - それ以外の場合、このメソッドは
Throwable
引数がThreadDeath
のインスタンスかどうかを判定します。 このインスタンスである場合は、特別なことは実行されません。 それ以外の場合、スレッドのgetName
メソッドから返されるスレッド名と、Throwable
のprintStackTrace
メソッドによるスタック・バックトレースとを含むメッセージが、標準エラー・ストリームに出力されます。
アプリケーションは、
ThreadGroup
のサブクラスでこのメソッドをオーバーライドして、キャッチされていない例外を別の方法で処理できます。- 定義:
uncaughtException
、インタフェースThread.UncaughtExceptionHandler
- パラメータ:
t
- 終了しようとしているスレッド。e
- キャッチされていない例外。
- このスレッド・グループに親スレッド・グループがある場合、その親の
-
allowThreadSuspension
@Deprecated(since="1.2", forRemoval=true) public boolean allowThreadSuspension(boolean b) 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このメソッドはもともと低メモリー状態でのサスペンションの制御を目的としたものです。 指定されませんでした。何も行いません。- パラメータ:
b
- ignored- 戻り値:
- false
- 導入されたバージョン:
- 1.1
-
toString
public String toString()このスレッド・グループの文字列表現を返します。
-