- 所有已实现的接口:
Thread.UncaughtExceptionHandler
线程组有名称和最大优先级。名称在创建组时指定,不能更改。该组的最大优先级是该组中创建的线程的最大优先级。它最初是从父线程组继承的,但可以使用 setMaxPriority 方法进行更改。
线程组弱 reachable 来自其父组,因此当组中没有居住线程时它有资格进行垃圾收集,否则线程组遥不可及.
除非另有说明,否则将 null 参数传递给此类中的构造函数或方法将导致抛出 NullPointerException 。
线程组和虚拟线程
Java 运行时为 虚拟线程 创建了一个特殊的线程组。在虚拟线程上调用时,该组由Thread.getThreadGroup 方法返回。该线程组与其他线程组的不同之处在于它的最大优先级是固定的,不能用setMaxPriority 方法改变。虚拟线程不包括在 activeCount 方法返回的估计线程数中,不被 enumerate 方法枚举,并且不被 interrupt 方法中断。
- API 注意:
- 线程组在早期的 Java 版本中提供了一种方法来对线程进行分组并提供一种形式作业控制对于线程。线程组支持小应用程序的隔离和用于诊断目的的定义方法。新应用程序很少会创建线程组并与此 API 交互。
- 自从:
- 1.0
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述int返回此线程组及其子组中 居住 平台线程数的估计值。int返回此线程组及其子组中组数的估计值。booleanallowThreadSuspension(boolean b) 已弃用,将被删除:此 API 元素可能会在未来版本中删除。此方法最初用于在低内存条件下控制暂停。final void已弃用,将被删除:此 API 元素可能会在未来版本中删除。此方法仅与 安全管理器 结合使用,已弃用并在未来版本中删除。final voiddestroy()已弃用,将被删除:此 API 元素可能会在未来版本中删除。此方法最初指定用于销毁空线程组。int将此线程组及其子组中的每个 居住 平台线程复制到指定数组中。int将此线程组中的每个 居住 平台线程复制到指定数组中。intenumerate(ThreadGroup[] list) 将对此线程组及其子组中每个子组的引用复制到指定的数组中。intenumerate(ThreadGroup[] list, boolean recurse) 将对此线程组中每个子组的引用复制到指定的数组中。final int返回此线程组的最大优先级。final StringgetName()返回此线程组的名称。final ThreadGroup返回此线程组的父级。final void中断此线程组及其子组中的所有 居住 平台线程。final booleanisDaemon()已弃用,将被删除:此 API 元素可能会在未来版本中删除。此方法最初指示线程组是否为守护线程组当它的最后一个线程终止时,它会自动销毁。boolean已弃用,将被删除:此 API 元素可能会在未来版本中删除。此方法最初指示线程组是否被销毁。voidlist()将有关此线程组的信息打印到标准输出。final boolean测试此线程组是线程组参数还是其祖先线程组之一。final voidresume()已弃用,将被删除:此 API 元素可能会在未来版本中删除。该方法最初指定用于恢复线程组中的所有线程。final voidsetDaemon(boolean daemon) 已弃用,将被删除:此 API 元素可能会在未来版本中删除。这个方法本来是配置线程组是否是一个守护线程组当它的最后一个线程终止时,它会自动销毁。final voidsetMaxPriority(int pri) 设置组的最大优先级。final voidstop()已弃用,将被删除:此 API 元素可能会在未来版本中删除。此方法最初指定用于停止线程组中的所有线程。final voidsuspend()已弃用,将被删除:此 API 元素可能会在未来版本中删除。该方法最初指定为暂停线程组中的所有线程。toString()返回此线程组的字符串表示形式。voiduncaughtException(Thread t, Throwable e) 当此线程组中的线程由于未捕获的异常而停止并且该线程未安装特定的Thread.UncaughtExceptionHandler时,由 Java 虚拟机调用。
-
构造方法详细信息
-
ThreadGroup
构造一个新的线程组。这个新组的父级是当前运行线程的线程组。无参调用父线程组的
checkAccess方法;这可能会导致安全异常。- 参数:
name- 新线程组的名称,可以是null- 抛出:
SecurityException- 如果当前线程无法在指定的线程组中创建线程。- 参见:
-
ThreadGroup
创建一个新的线程组。这个新组的父级是指定的线程组。无参调用父线程组的
checkAccess方法;这可能会导致安全异常。- 参数:
parent- 父线程组。name- 新线程组的名称,可以是null- 抛出:
SecurityException- 如果当前线程无法在指定的线程组中创建线程。- 参见:
-
-
方法详情
-
getName
返回此线程组的名称。- 返回:
-
这个线程组的名字,可能是
null
-
getParent
返回此线程组的父级。首先,如果父线程不是
null,则不带参数调用父线程组的checkAccess方法;这可能会导致安全异常。- 返回:
-
该线程组的父级。顶级线程组是唯一一个其父级为
null的线程组。 - 抛出:
SecurityException- 如果当前线程不能修改这个线程组。- 参见:
-
getMaxPriority
public final int getMaxPriority()返回此线程组的最大优先级。这是在线程组中创建的新线程的最大优先级。- 返回:
- 在线程组中创建的新线程的最大优先级
- 参见:
-
isDaemon
已弃用,将被删除:此 API 元素可能会在未来版本中删除。此方法最初指示线程组是否为守护线程组当它的最后一个线程终止时,它会自动销毁。守护线程组的概念不再存在。当组中没有活动线程并且无法访问时,线程组有资格被 GC 处理。返回此线程组的守护进程状态。守护进程状态不用于任何事情。- 返回:
- 该线程组的守护进程状态
-
isDestroyed
已弃用,将被删除:此 API 元素可能会在未来版本中删除。此方法最初指示线程组是否被销毁。销毁线程组的能力和销毁线程组的概念不再存在。当组中没有活动线程并且无法访问时,线程组有资格被 GC 处理。返回错误。- 返回:
- false
- 自从:
- 1.1
-
setDaemon
已弃用,将被删除:此 API 元素可能会在未来版本中删除。这个方法本来是配置线程组是否是一个守护线程组当它的最后一个线程终止时,它会自动销毁。守护线程组的概念不再存在。当组中没有活动线程并且无法访问时,线程组有资格被 GC 处理。设置此线程组的守护进程状态。守护进程状态不用于任何事情。首先,不带参数调用该线程组的
checkAccess方法;这可能会导致安全异常。- 参数:
daemon- 守护进程状态- 抛出:
SecurityException- 如果当前线程不能修改这个线程组。- 参见:
-
setMaxPriority
public final void setMaxPriority(int pri) 设置组的最大优先级。 ThreadGroup for virtual threads 的最大优先级不会被这种方法改变(新的优先级被忽略)。线程组(或子组)中已经具有更高优先级的线程不受此方法的影响。首先,不带参数调用该线程组的
checkAccess方法;这可能会导致安全异常。如果
pri参数小于Thread.MIN_PRIORITY或大于Thread.MAX_PRIORITY,则该组的最大优先级保持不变。否则,此 ThreadGroup 对象的优先级设置为指定的
pri和此线程组父级的最大允许优先级中的较小者。 (如果这个线程组是系统线程组,没有父线程,那么它的最大优先级简单地设置为pri。)然后递归调用这个方法,以pri作为它的参数,对于属于这个线程组的每个线程组.- 参数:
pri- 线程组的新优先级。- 抛出:
SecurityException- 如果当前线程不能修改这个线程组。- 参见:
-
parentOf
测试此线程组是线程组参数还是其祖先线程组之一。- 参数:
g- 一个线程组,可以是null- 返回:
true如果此线程组是线程组参数或其祖先线程组之一;false否则。
-
checkAccess
已弃用,将被删除:此 API 元素可能会在未来版本中删除。此方法仅与 安全管理器 结合使用,已弃用并在未来版本中删除。因此,此方法也已弃用并可能被删除。安全管理器或此方法没有替代品。确定当前运行的线程是否有权修改此线程组。如果有一个安全管理器,它的
checkAccess方法被调用,这个线程组作为它的参数。这可能会导致抛出SecurityException。- 抛出:
SecurityException- 如果不允许当前线程访问该线程组。- 参见:
-
activeCount
public int activeCount()返回此线程组及其子组中 居住 平台线程数的估计值。估计中不包括虚拟线程。此方法递归迭代此线程组中的所有子组。返回的值只是一个估计值,因为当此方法遍历内部数据结构时线程数可能会动态变化,并且可能会受到某些系统线程存在的影响。此方法主要用于调试和监视目的。
- 返回:
- 估计此线程组和任何其他以该线程组为祖先的线程组中的活动线程数
-
enumerate
- 参数:
list- 用于放置线程列表的数组- 返回:
- 放入数组的线程数
- 抛出:
SecurityException- 如果checkAccess确定当前线程不能访问这个线程组
-
enumerate
将此线程组中的每个 居住 平台线程复制到指定数组中。此方法不枚举虚拟线程。如果recurse是true,此方法递归地枚举此线程组的所有子组,并且还包括对这些子组中每个实时平台线程的引用。如果数组太短无法容纳所有线程,则多余的线程将被忽略。然而,应用程序可能会使用 activeCount 方法来估计数组的大小如果数组太短无法容纳所有线程,则多余的线程将被忽略。如果获取此线程组中的每个活动线程至关重要,则调用者应验证返回的 int 值是否严格小于
list的长度。由于此方法中固有的竞争条件,建议仅将此方法用于调试和监视目的。
- 参数:
list- 用于放置线程列表的数组recurse- 如果是true,则递归枚举此线程组的所有子组- 返回:
- 放入数组的线程数
- 抛出:
SecurityException- 如果checkAccess确定当前线程不能访问这个线程组
-
activeGroupCount
public int activeGroupCount()返回此线程组及其子组中组数的估计值。递归迭代此线程组中的所有子组。返回的值只是一个估计值,因为当此方法遍历内部数据结构时,线程组的数量可能会动态变化。此方法主要用于调试和监视目的。
- 返回:
- 以此线程组为祖先的线程组的数量
-
enumerate
将对此线程组及其子组中每个子组的引用复制到指定的数组中。此方法的调用与调用的行为完全相同
enumerate
(list, true)- 参数:
list- 用于放置线程组列表的数组- 返回:
- 放入数组的线程组数
- 抛出:
SecurityException- 如果checkAccess确定当前线程不能访问这个线程组
-
enumerate
将对此线程组中每个子组的引用复制到指定的数组中。如果recurse是true,此方法递归地枚举此线程组的所有子组,并且还包括对这些子组中每个线程组的引用。应用程序可能会使用 activeGroupCount 方法来估计数组应该有多大,但是如果数组太短无法容纳所有线程组,则多余的线程组将被忽略。如果获取此线程组中的每个子组至关重要,则调用者应验证返回的 int 值是否严格小于
list的长度。由于此方法中固有的竞争条件,建议仅将此方法用于调试和监视目的。
- 参数:
list- 用于放置线程组列表的数组recurse- 如果true,递归枚举所有子组- 返回:
- 放入数组的线程组数
- 抛出:
SecurityException- 如果checkAccess确定当前线程不能访问这个线程组
-
stop
已弃用,将被删除:此 API 元素可能会在未来版本中删除。此方法最初指定用于停止线程组中的所有线程。它本质上是不安全的。抛出UnsupportedOperationException。 -
interrupt
public final void interrupt()中断此线程组及其子组中的所有 居住 平台线程。- 抛出:
SecurityException- 如果不允许当前线程访问此线程组或线程组中的任何线程。- 自从:
- 1.2
- 参见:
-
suspend
已弃用,将被删除:此 API 元素可能会在未来版本中删除。该方法最初指定为暂停线程组中的所有线程。抛出UnsupportedOperationException。 -
resume
已弃用,将被删除:此 API 元素可能会在未来版本中删除。该方法最初指定用于恢复线程组中的所有线程。抛出UnsupportedOperationException。 -
destroy
已弃用,将被删除:此 API 元素可能会在未来版本中删除。此方法最初指定用于销毁空线程组。显式销毁线程组的能力不再存在。当组中没有活动线程并且无法访问时,线程组有资格被 GC 处理。什么也没做。 -
list
public void list()将有关此线程组的信息打印到标准输出。此方法仅对调试有用。 -
uncaughtException
当此线程组中的线程由于未捕获的异常而停止并且该线程未安装特定的Thread.UncaughtExceptionHandler时,由 Java 虚拟机调用。ThreadGroup的uncaughtException方法执行以下操作:- 如果此线程组有父线程组,则使用相同的两个参数调用该父线程组的
uncaughtException方法。 - 否则,此方法检查是否安装了 默认未捕获的异常处理程序,如果安装了,则使用相同的两个参数调用其
uncaughtException方法。 - 否则,包含线程名称的消息(从线程的
getName方法返回)和堆栈回溯(使用Throwable的printStackTrace方法)被打印到 标准错误流 。
应用程序可以在
ThreadGroup的子类中覆盖此方法,以提供对未捕获异常的替代处理。- 指定者:
uncaughtException在接口Thread.UncaughtExceptionHandler中- 参数:
t- 即将退出的线程。e- 未捕获的异常。
- 如果此线程组有父线程组,则使用相同的两个参数调用该父线程组的
-
allowThreadSuspension
已弃用,将被删除:此 API 元素可能会在未来版本中删除。此方法最初用于在低内存条件下控制暂停。它从未被指定。什么也没做。- 参数:
b- 忽略- 返回:
- false
- 自从:
- 1.1
-
toString
返回此线程组的字符串表示形式。
-