public class ThreadGroup extends Object implements Thread.UncaughtExceptionHandler
スレッドは、それ自体のスレッド・グループについての情報にアクセスすることを許可されていますが、そのスレッド・グループの親スレッド・グループまたはその他のスレッド・グループについての情報にアクセスすることはできません。
| コンストラクタと説明 |
|---|
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との組合せでのみ使用されますが、これらはどちらも本質的にデッドロックを発生させやすいため推奨されていません。詳細は、
Thread.suspend()を参照してください。 |
void |
setDaemon(boolean daemon)
このスレッド・グループのデーモンの状態を変更します。
|
void |
setMaxPriority(int pri)
グループの最高優先順位を設定します。
|
void |
stop()
非推奨。
このメソッドは本質的に安全ではありません。詳細は、
Thread.stop()を参照してください。 |
void |
suspend()
非推奨。
このメソッドは本質的にデッドロックを発生させやすくなっています。詳細は、
Thread.suspend()を参照してください。 |
String |
toString()
このThreadGroupの文字列表現を返します。
|
void |
uncaughtException(Thread t, Throwable e)
このスレッド・グループ内のスレッドが、キャッチされていない例外のために停止し、スレッドに固有の
Thread.UncaughtExceptionHandlerが備えられていないときに、Java仮想マシンによって呼び出されます。 |
public ThreadGroup(String name)
親スレッド・グループのcheckAccessメソッドは、引数なしで呼び出されます。この結果、セキュリティ例外が発生することがあります。
name - 新しいスレッド・グループの名前。SecurityException - 現在のスレッドが、指定されたスレッド・グループ内のスレッドを作成できない場合。checkAccess()public ThreadGroup(ThreadGroup parent, String name)
親スレッド・グループのcheckAccessメソッドは、引数なしで呼び出されます。この結果、セキュリティ例外が発生することがあります。
parent - 親のスレッド・グループ。name - 新しいスレッド・グループの名前。NullPointerException - スレッド・グループの引数がnullの場合。SecurityException - 現在のスレッドが、指定されたスレッド・グループ内のスレッドを作成できない場合。SecurityException, checkAccess()public final String getName()
public final ThreadGroup getParent()
親がnullでない場合、最初に親スレッド・グループのcheckAccessメソッドが引数なしで呼び出されます。この結果、セキュリティ例外がスローされることがあります。
nullであるスレッド・グループは、トップ・レベルのスレッド・グループのみ。SecurityException - 現在のスレッドがこのスレッド・グループを変更できない場合。checkAccess(), SecurityException, RuntimePermissionpublic final int getMaxPriority()
setMaxPriority(int)public final boolean isDaemon()
true、そうでない場合はfalse。public boolean isDestroyed()
public final void setDaemon(boolean daemon)
まず、このスレッド・グループのcheckAccessメソッドが引数なしで呼び出されます。この結果、セキュリティ例外がスローされることがあります。
デーモン・スレッド・グループは、その最後のスレッドが停止する場合、またはその最後のスレッド・グループが破棄される場合に自動的に破棄されます。
daemon - trueの場合は、このスレッド・グループをデーモン・スレッド・グループとしてマークし、そうでない場合は、このスレッド・グループを一般のものとしてマークする。SecurityException - 現在のスレッドがこのスレッド・グループを変更できない場合。SecurityException, checkAccess()public final void setMaxPriority(int pri)
まず、このスレッド・グループのcheckAccessメソッドが引数なしで呼び出されます。この結果、セキュリティ例外がスローされることがあります。
pri引数の値がThread.MIN_PRIORITYより小さいか、Thread.MAX_PRIORITYより大きい場合、グループの最大優先順位は変更されません。
それ以外の場合、このThreadGroupオブジェクトの優先順位は、指定されたpriおよびこのスレッド・グループの親に許可される最高優先順位より低く設定されます。(このスレッド・グループが、親を持たないシステム・スレッド・グループの場合、その最高優先順位はpriだけに設定される。)その後、このスレッド・グループに属するスレッド・グループごとに、このメソッドがpriを引数として再帰的に呼び出されます。
pri - スレッド・グループの新しい優先順位。SecurityException - 現在のスレッドがこのスレッド・グループを変更できない場合。getMaxPriority()、SecurityException, checkAccess()public final boolean parentOf(ThreadGroup g)
g - スレッド・グループ。true、そうでない場合はfalse。public final void checkAccess()
セキュリティ・マネージャが存在する場合、このグループがその引数として指定され、そのcheckAccessメソッドが呼び出されます。その結果、SecurityExceptionがスローされることがあります。
SecurityException - 現在のスレッドがこのスレッド・グループへのアクセスを許されていない場合。SecurityManager.checkAccess(java.lang.ThreadGroup)public int activeCount()
返される値は単なる推定値ですが、それは、このメソッドが内部のデータ構造体をトラバースしている間にスレッド数が動的に変化する可能性があるほか、特定のシステム・スレッドの存在の影響を受ける可能性もあるからです。このメソッドは主に、デバッグおよび監視目的のためのものです。
public int enumerate(Thread[] list)
このメソッド呼出しの動作は、次の呼出しの動作とまったく同一です。
enumerate(list, true)
list - スレッドのリストの格納先である配列SecurityException - 現在のスレッドはこのスレッド・グループにアクセスできないとcheckAccessによって判定された場合public int enumerate(Thread[] list, boolean recurse)
recurseがtrueの場合、このメソッドは再帰的にこのスレッド・グループのすべてのサブグループを列挙するので、それらのサブグループ内のすべてのアクティブ・スレッドへの参照も含められます。配列が小さすぎてすべてのスレッドを保持できない場合、余分なスレッドは通知なしに無視されます。
アプリケーションでは、配列がどの程度の大きさになるかについておよその数を取得するためにactiveCountメソッドを使用する場合があります。ただし、配列が小さすぎてすべてのスレッドを保持できない場合、余分なスレッドは通知なしに無視されます。このスレッド・グループにあるすべてのアクティブ・スレッドを取得することが重要な場合、呼出し側は返された整数値が厳密にlistの長さ未満であることを確認する必要があります。
このメソッドの本質的な競合条件のため、このメソッドはデバッグおよび監視目的にのみ使用することをお薦めします。
list - スレッドのリストの格納先である配列recurse - trueの場合、このスレッド・グループのすべてのサブグループを再帰的に列挙するSecurityException - 現在のスレッドはこのスレッド・グループにアクセスできないとcheckAccessによって判定された場合public int activeGroupCount()
このメソッドが内部のデータ構造をトラバースしている間にも、スレッド・グループ数が動的に変化する場合があるため、返される値は推定に過ぎません。このメソッドは主に、デバッグおよび監視目的のためのものです。
public int enumerate(ThreadGroup[] list)
このメソッド呼出しの動作は、次の呼出しの動作とまったく同一です。
enumerate(list, true)
list - スレッド・グループのリストの格納先である配列SecurityException - 現在のスレッドはこのスレッド・グループにアクセスできないとcheckAccessによって判定された場合public int enumerate(ThreadGroup[] list, boolean recurse)
recurseがtrueの場合、このメソッドは再帰的にこのスレッド・グループのすべてのサブグループを列挙するので、それらのサブグループ内のすべてのアクティブ・スレッド・グループへの参照も含められます。
アプリケーションでは、配列がどの程度の大きさになるかについておよその数を取得するためにactiveGroupCountメソッドを使用する場合があります。ただし、配列が小さすぎてすべてのスレッド・グループを保持できない場合、余分なスレッド・グループは通知なしに無視されます。このスレッド・グループにあるすべてのアクティブ・サブグループを取得することが重要な場合、呼出し側は返された整数値が厳密にlistの長さ未満であることを確認する必要があります。
このメソッドの本質的な競合条件のため、このメソッドはデバッグおよび監視目的にのみ使用することをお薦めします。
list - スレッド・グループのリストの格納先である配列recurse - trueの場合、すべてのサブグループを再帰的に列挙するSecurityException - 現在のスレッドはこのスレッド・グループにアクセスできないとcheckAccessによって判定された場合@Deprecated public final void stop()
Thread.stop()を参照してください。
まず、このスレッド・グループのcheckAccessメソッドが引数なしで呼び出されます。この結果、セキュリティ例外がスローされることがあります。
次にこのメソッドは、このスレッド・グループとそのすべてのサブグループ内のすべてのスレッドについてstopメソッドを呼び出します。
SecurityException - 現在のスレッドが、このスレッド・グループまたはスレッド・グループ内のスレッドへのアクセスを許可されない場合。SecurityException、Thread.stop()、checkAccess()public final void interrupt()
まず、このスレッド・グループのcheckAccessメソッドが引数なしで呼び出されます。この結果、セキュリティ例外がスローされることがあります。
次にこのメソッドは、このスレッド・グループとそのすべてのサブグループ内のすべてのスレッドについてinterruptメソッドを呼び出します。
SecurityException - 現在のスレッドが、このスレッド・グループまたはスレッド・グループ内のスレッドへのアクセスを許可されない場合。Thread.interrupt()、SecurityException, checkAccess()@Deprecated public final void suspend()
Thread.suspend()を参照してください。
まず、このスレッド・グループのcheckAccessメソッドが引数なしで呼び出されます。この結果、セキュリティ例外がスローされることがあります。
次にこのメソッドは、このスレッド・グループとそのすべてのサブグループ内のすべてのスレッドについてsuspendメソッドを呼び出します。
SecurityException - 現在のスレッドが、このスレッド・グループまたはスレッド・グループ内のスレッドへのアクセスを許可されない場合。Thread.suspend()、SecurityException, checkAccess()@Deprecated public final void resume()
Thread.suspend()を参照してください。
まず、このスレッド・グループのcheckAccessメソッドが引数なしで呼び出されます。この結果、セキュリティ例外がスローされることがあります。
次にこのメソッドは、このスレッド・グループとそのすべてのサブグループ内のすべてのスレッドについてresumeメソッドを呼び出します。
SecurityException - 現在のスレッドが、このスレッド・グループまたはスレッド・グループ内のスレッドへのアクセスを許可されない場合。SecurityException、Thread.resume()、checkAccess()public final void destroy()
まず、このスレッド・グループのcheckAccessメソッドが引数なしで呼び出されます。この結果、セキュリティ例外がスローされることがあります。
IllegalThreadStateException - スレッド・グループが空ではない場合、またはスレッド・グループがすでに破棄されている場合。SecurityException - 現在のスレッドがこのスレッド・グループを変更できない場合。checkAccess()public void list()
public void uncaughtException(Thread t, Throwable e)
Thread.UncaughtExceptionHandlerが備えられていないときに、Java仮想マシンによって呼び出されます。
ThreadGroupのuncaughtExceptionメソッドは次の処理を行います。
uncaughtExceptionメソッドは同じ2つの引数が指定されて呼び出されます。
uncaughtExceptionメソッドが呼び出されます。
Throwable引数がThreadDeathのインスタンスかどうかを判定します。このインスタンスである場合は、特別なことは実行されません。それ以外の場合、スレッドのgetNameメソッドから返されるスレッド名と、ThrowableのprintStackTraceメソッドによるスタック・バックトレースとを含むメッセージが、標準エラー・ストリームに出力されます。
アプリケーションは、ThreadGroupのサブクラスでこのメソッドをオーバーライドして、キャッチされていない例外を別の方法で処理できます。
uncaughtException、インタフェース: Thread.UncaughtExceptionHandlert - 終了しようとしているスレッド。e - キャッチされていない例外。@Deprecated public boolean allowThreadSuspension(boolean b)
suspend()に依存します。また、この呼出しの動作は指定されません。b - 中断を可能または不可にするboolean バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.