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
, RuntimePermission
public 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.UncaughtExceptionHandler
t
- 終了しようとしているスレッド。e
- キャッチされていない例外。@Deprecated public boolean allowThreadSuspension(boolean b)
suspend()
に依存します。また、この呼び出しの動作は指定されません。b
- 中断を可能または不可にする boolean バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.