- java.lang.Object
-
- 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)
このスレッド・グループ内の各アクティブ・スレッドを、指定された配列にコピーします。recurse
がtrue
の場合、このメソッドは再帰的にこのスレッド・グループのすべてのサブグループを列挙するので、それらのサブグループ内のすべてのアクティブ・スレッドへの参照も含められます。 配列が小さすぎてすべてのスレッドを保持できない場合、余分なスレッドは通知なしに無視されます。アプリケーションでは、配列がどの程度の大きさになるかについておよその数を取得するために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)
このスレッド・グループ内の各アクティブ・サブグループへの参照を、指定された配列にコピーします。recurse
がtrue
の場合、このメソッドは再帰的にこのスレッド・グループのすべてのサブグループを列挙するので、それらのサブグループ内のすべてのアクティブ・スレッド・グループへの参照も含められます。アプリケーションでは、配列がどの程度の大きさになるかについておよその数を取得するために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
- 関連項目:
SecurityException
、Thread.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
- 関連項目:
SecurityException
、Thread.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仮想マシンによって呼び出されます。ThreadGroup
のuncaughtException
メソッドは次の処理を行います。- このスレッド・グループに親スレッド・グループがある場合、その親の
uncaughtException
メソッドは同じ2つの引数が指定されて呼び出されます。 - そうでない場合、このメソッドはデフォルトのキャッチされない例外のハンドラが備えられているかどうかをチェックする。備えられている場合は、同じ2つの引数を使って
uncaughtException
メソッドが呼び出されます。 - それ以外の場合、このメソッドは
Throwable
引数がThreadDeath
のインスタンスかどうかを判定します。 このインスタンスである場合は、特別なことは実行されません。 それ以外の場合、スレッドのgetName
メソッドから返されるスレッド名と、Throwable
のprintStackTrace
メソッドによるスタック・バックトレースとを含むメッセージが、標準エラー・ストリームに出力されます。
アプリケーションは、
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
-
-