public class ThreadGroup extends Object implements Thread.UncaughtExceptionHandler
允许一个线程访问它自己的线程组的信息,但不允许访问它的线程组的父线程组或其他任何线程组的信息。
| Constructor and Description |
|---|
ThreadGroup(String name)
构建一个新的线程组。
|
ThreadGroup(ThreadGroup parent, String name)
创建一个新的线程组。
|
| Modifier and Type | Method and Description |
|---|---|
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)
测试这个线程组是否是线程组参数或它的一个祖先线程组的一个。
|
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()
返回这个线程组的字符串表示形式。
|
void |
uncaughtException(Thread t, Throwable e)
由java虚拟机时,一个线程,该线程组中的停止,因为未捕获的异常,和线程没有特定的
Thread.UncaughtExceptionHandler安装。
|
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.MAX_PRIORITY Thread.MIN_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方法得到的估计有多大的数组是应该的,但是空如果数组太短,不保留所有的线程,额外的线程将被忽略。如果是该线程组中的每一个活动线程获得关键,调用者应该验证返回int值严格小于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方法得到的估计有多大的数组是应该的,但是空如果数组太短,不保留所有的线程组,则额外的线程组将被忽略。如果是该线程组中的每一个活动小组获得的关键,调用者应该验证返回int值严格小于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安装。
对ThreadGroup的uncaughtException方法如下:
uncaughtException方法调用相同的两参数。uncaughtException方法称为具有相同的两个参数。Throwable争论是ThreadDeath实例。如果是这样,没有什么特别的事。否则,包含线程的名称信息,如从线程的getName方法返回,和堆栈回溯的方法,使用Throwable printStackTrace,打印到standard error stream。应用程序可以重写此方法在子类ThreadGroup提供替代处理未捕获的异常。
uncaughtException 接口
Thread.UncaughtExceptionHandler
t,即将退出线程。
e -未捕获的异常。
@Deprecated public boolean allowThreadSuspension(boolean b)
suspend(),这是过时的。此外,这个调用的行为从来没有被指定。
b -布尔允许或不允许悬挂
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.