JavaTM Platform
Standard Ed. 6

java.lang
クラス ThreadGroup

java.lang.Object
  上位を拡張 java.lang.ThreadGroup
すべての実装されたインタフェース:
Thread.UncaughtExceptionHandler

public class ThreadGroup
extends Object
implements Thread.UncaughtExceptionHandler

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

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

導入されたバージョン:
JDK1.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 と組み合わせて使用されます。 どれもデッドロックを発生させやすいため推奨されません。詳細は 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 仮想マシンによって呼び出されます。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

コンストラクタの詳細

ThreadGroup

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

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

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

ThreadGroup

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

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

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

getName

public final String getName()
このスレッドグループの名前を返します。

戻り値:
このスレッドグループの名前
導入されたバージョン:
JDK1.0

getParent

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

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

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

getMaxPriority

public final int getMaxPriority()
このスレッドグループの最高優先順位を返します。このグループの一部であるスレッドに、最高優先順位より高い優先順位を指定することはできません。

戻り値:
このスレッドグループ内のスレッドに指定できる最高優先順位
導入されたバージョン:
JDK1.0
関連項目:
setMaxPriority(int)

isDaemon

public final boolean isDaemon()
このスレッドグループがデーモンスレッドグループであるかどうかを判定します。デーモンスレッドグループは、その最後のスレッドが停止する場合、またはその最後のスレッドグループが破棄される場合に自動的に破棄されます。

戻り値:
このスレッドグループがデーモンスレッドグループである場合は true、そうでない場合は false
導入されたバージョン:
JDK1.0

isDestroyed

public boolean isDestroyed()
このスレッドグループが破棄されたかどうかを判定します。

戻り値:
このオブジェクトが破棄されている場合は true
導入されたバージョン:
JDK1.1

setDaemon

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

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

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

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

setMaxPriority

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

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

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

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

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

parentOf

public final boolean parentOf(ThreadGroup g)
このスレッドグループがスレッドグループ引数であるか、あるいはその祖先スレッドグループの内の 1 つであるかどうかを判定します。

パラメータ:
g - スレッドグループ
戻り値:
このスレッドグループがスレッドグループ引数であるか、またはその祖先スレッドグループの内の 1 つである場合は true、そうでない場合は false
導入されたバージョン:
JDK1.0

checkAccess

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

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

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

activeCount

public int activeCount()
このスレッドグループ内のアクティブスレッドのおおよその数を返します。結果には、並行のアクティビティーが反映されない可能性があり、特定のシステムスレッドの存在により影響を受ける可能性があります。

結果は本質的に不正確な性質を持つため、このメソッドは情報目的だけに使用することをお勧めします。

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

enumerate

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

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

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

このメソッドの本質的な競合条件のため、このメソッドは情報目的だけに使用することをお勧めします。

パラメータ:
list - スレッドのリストの格納先である配列
戻り値:
配列に格納されるスレッド数
例外:
SecurityException - 現在のスレッドに、このスレッドグループを列挙するためのアクセス権がない場合
導入されたバージョン:
JDK1.0
関連項目:
activeCount(), checkAccess()

enumerate

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

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

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

このメソッドの本質的な競合条件のため、このメソッドは情報目的だけに使用することをお勧めします。

パラメータ:
list - スレッドのリストの格納先である配列
recurse - このスレッドグループのサブグループであるスレッドグループ内のスレッドも含むかどうかを示すフラグ
戻り値:
配列に格納されるスレッド数
例外:
SecurityException - 現在のスレッドに、このスレッドグループを列挙するためのアクセス権がない場合
導入されたバージョン:
JDK1.0
関連項目:
activeCount(), checkAccess()

activeGroupCount

public int activeGroupCount()
このスレッドグループ内のアクティブグループのおおよその数を返します。結果には、並行のアクティビティーが反映されない可能性があります。

結果は本質的に不正確な性質を持つため、このメソッドは情報目的だけに使用することをお勧めします。

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

enumerate

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

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

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

このメソッドの本質的な競合条件のため、このメソッドは情報目的だけに使用することをお勧めします。

パラメータ:
list - スレッドグループのリストの格納先の配列
戻り値:
配列に格納されるスレッドグループ数
例外:
SecurityException - 現在のスレッドに、このスレッドグループを列挙するためのアクセス権がない場合
導入されたバージョン:
JDK1.0
関連項目:
activeGroupCount(), checkAccess()

enumerate

public int enumerate(ThreadGroup[] list,
                     boolean recurse)
このスレッドグループ内の各アクティブサブグループへの参照を、指定された配列にコピーします。recurse フラグが true である場合、サブグループなどのすべてのアクティブサブグループへの参照も含まれます。

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

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

このメソッドの本質的な競合条件のため、このメソッドは情報目的だけに使用することをお勧めします。

パラメータ:
list - スレッドのリストの格納先である配列
recurse - 含まれるすべてのスレッドグループを再帰的に列挙するかどうかを示すフラグ
戻り値:
配列に格納されるスレッドグループ数
例外:
SecurityException - 現在のスレッドに、このスレッドグループを列挙するためのアクセス権がない場合
導入されたバージョン:
JDK1.0
関連項目:
activeGroupCount(), checkAccess()

stop

@Deprecated
public final void stop()
推奨されていません。 このメソッドは本質的に安全ではありません。詳細は Thread.stop() を参照してください。

このスレッドグループ内のすべてのスレッドを停止します。

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

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

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

interrupt

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

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

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

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

suspend

@Deprecated
public final void suspend()
推奨されていません。 このメソッドは本質的にデッドロックを発生させやすくなっています。詳細は Thread.suspend() を参照してください。

このスレッドグループ内のすべてのスレッドを停止します。

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

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

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

resume

@Deprecated
public final void resume()
推奨されていません。 このメソッドは 単に Thread.suspend および ThreadGroup.suspend と組み合わせて使用されます。 どれもデッドロックを発生させやすいため推奨されません。詳細は Thread.suspend() を参照してください。

このスレッドグループ内のすべてのスレッドを再開します。

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

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

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

destroy

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

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

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

list

public void list()
このスレッドグループについての情報を標準出力に出力します。このメソッドはデバッグの場合にだけ役立ちます。

導入されたバージョン:
JDK1.0

uncaughtException

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

ThreadGroup の uncaughtException メソッドは以下を実行します。

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

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

allowThreadSuspension

@Deprecated
public boolean allowThreadSuspension(boolean b)
推奨されていません。 この呼び出しの定義は、推奨されていない suspend() に依存します。また、この呼び出しの動作は指定されません。

メモリ不足による暗黙の中断を制御するために VM によって使用されます。

パラメータ:
b - 中断を可能または不可にする boolean
戻り値:
成功した場合は true
導入されたバージョン:
JDK1.1

toString

public String toString()
この ThreadGroup の文字列表現を返します。

オーバーライド:
クラス Object 内の toString
戻り値:
このスレッドグループの文字列表現
導入されたバージョン:
JDK1.0

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。