Most visited

Recently visited

Added in API level 1

ThreadGroup

public class ThreadGroup
extends Object implements Thread.UncaughtExceptionHandler

java.lang.Object
   ↳ java.lang.ThreadGroup


线程组表示一组线程。 另外,线程组还可以包含其他线程组。 线程组形成一棵树,其中除初始线程组以外的每个线程组都有一个父节点。

允许线程访问有关其自己线程组的信息,但不能访问有关其线程组的父线程组或任何其他线程组的信息。

Summary

Public constructors

ThreadGroup(String name)

构造一个新的线程组。

ThreadGroup(ThreadGroup parent, String name)

创建一个新的线程组。

Public methods

int activeCount()

返回此线程组及其子组中活动线程数的估计值。

int activeGroupCount()

返回此线程组及其子组中活动组数量的估计值。

boolean allowThreadSuspension(boolean b)

此方法在API级别1中已被弃用。此调用的定义取决于suspend() ,该值已弃用。 此外,此调用的行为从未被指定。

final void checkAccess()

确定当前正在运行的线程是否有权修改此线程组。

final void destroy()

销毁此线程组及其所有子组。

int enumerate(ThreadGroup[] list)

复制到指定数组引用此线程组及其子组中的每个活动子组。

int enumerate(ThreadGroup[] list, boolean recurse)

复制到此线程组中每个活动子组的指定数组引用中。

int enumerate(Thread[] list)

将此线程组及其子组中的每个活动线程复制到指定数组中。

int enumerate(Thread[] list, boolean recurse)

将此线程组中的每个活动线程复制到指定数组中。

final int getMaxPriority()

返回此线程组的最大优先级。

final String getName()

返回此线程组的名称。

final ThreadGroup getParent()

返回此线程组的父项。

final void interrupt()

中断此线程组中的所有线程。

final boolean isDaemon()

测试此线程组是否为守护线程组。

boolean isDestroyed()

测试该线程组是否已被销毁。

void list()

将有关该线程组的信息打印到标准输出。

final boolean parentOf(ThreadGroup g)

测试此线程组是线程组参数还是其祖先线程组之一。

final void resume()

此方法在API级别1中已弃用。此方法仅与Thread.suspendThreadGroup.suspend一起使用,两者都已被弃用,因为它们固有地容易出现死锁。 有关详细信息,请参阅suspend()

final void setDaemon(boolean daemon)

更改此线程组的守护程序状态。

final void setMaxPriority(int pri)

设置组的最大优先级。

final void stop()

此方法在API级别1中已弃用。此方法本质上不安全。 有关详细信息,请参阅stop()

final void suspend()

此方法在API级别1中已弃用。此方法本质上容易出现死锁。 有关详细信息,请参阅suspend()

String toString()

返回此线程组的字符串表示形式。

void uncaughtException(Thread t, Throwable e)

当线程组中的线程由于未捕获的异常而停止时,由Java虚拟机调用,并且该线程没有安装特定的 Thread.UncaughtExceptionHandler

Inherited methods

From class java.lang.Object
From interface java.lang.Thread.UncaughtExceptionHandler

Public constructors

ThreadGroup

Added in API level 1
ThreadGroup (String name)

构造一个新的线程组。 这个新组的父节点是当前正在运行的线程的线程组。

父线程组的checkAccess方法不带任何参数调用; 这可能会导致安全异常。

Parameters
name String: the name of the new thread group.
Throws
SecurityException if the current thread cannot create a thread in the specified thread group.

也可以看看:

ThreadGroup

Added in API level 1
ThreadGroup (ThreadGroup parent, 
                String name)

创建一个新的线程组。 这个新组的父节点是指定的线程组。

父线程组的checkAccess方法在不带参数的情况下调用; 这可能会导致安全异常。

Parameters
parent ThreadGroup: the parent thread group.
name String: the name of the new thread group.
Throws
NullPointerException if the thread group argument is null.
SecurityException if the current thread cannot create a thread in the specified thread group.

也可以看看:

Public methods

activeCount

Added in API level 1
int activeCount ()

返回此线程组及其子组中活动线程数的估计值。 递归迭代此线程组中的所有子组。

返回的值仅为估计值,因为线程数可能会动态变化,而此方法会遍历内部数据结构,并可能受某些系统线程的影响。 此方法主要用于调试和监控目的。

Returns
int an estimate of the number of active threads in this thread group and in any other thread group that has this thread group as an ancestor

activeGroupCount

Added in API level 1
int activeGroupCount ()

返回此线程组及其子组中活动组数量的估计值。 递归迭代此线程组中的所有子组。

返回的值只是一个估计值,因为在此方法遍历内部数据结构时,线程组的数量可能会动态变化。 此方法主要用于调试和监控目的。

Returns
int the number of active thread groups with this thread group as an ancestor

allowThreadSuspension

Added in API level 1
boolean allowThreadSuspension (boolean b)

此方法在API级别1中已弃用。
此调用的定义取决于suspend() ,已弃用。 此外,此调用的行为从未被指定。

由VM用来控制lowmem隐式暂停。

Parameters
b boolean: boolean to allow or disallow suspension
Returns
boolean true on success

checkAccess

Added in API level 1
void checkAccess ()

确定当前正在运行的线程是否有权修改此线程组。

如果有安全管理器, checkAccess该线程组为参数调用其checkAccess方法。 这可能会导致投掷SecurityException

Throws
SecurityException if the current thread is not allowed to access this thread group.

也可以看看:

destroy

Added in API level 1
void destroy ()

销毁此线程组及其所有子组。 该线程组必须为空,表示此线程组中已经停止的所有线程。

首先,这个线程组的checkAccess方法被调用时没有参数; 这可能会导致安全异常。

Throws
IllegalThreadStateException if the thread group is not empty or if the thread group has already been destroyed.
SecurityException if the current thread cannot modify this thread group.

也可以看看:

enumerate

Added in API level 1
int enumerate (ThreadGroup[] list)

复制到指定数组引用此线程组及其子组中的每个活动子组。

此方法的调用的行为与调用完全相同

enumerate (list, true)

Parameters
list ThreadGroup: an array into which to put the list of thread groups
Returns
int the number of thread groups put into the array
Throws
SecurityException if checkAccess determines that the current thread cannot access this thread group

enumerate

Added in API level 1
int enumerate (ThreadGroup[] list, 
                boolean recurse)

复制到此线程组中每个活动子组的指定数组引用中。 如果recursetrue ,则此方法递归枚举此线程组的所有子组,并且还包括对这些子组中每个活动线程组的引用。

应用程序可能会使用activeGroupCount方法来估计数组的大小,但如果数组太短而无法容纳所有线程组,则会以无提示方式忽略额外的线程组。 如果获取此线程组中的每个活动子组都非常重要,则调用者应验证返回的int值严格小于list的长度。

由于这种方法固有的竞争条件,建议该方法仅用于调试和监控目的。

Parameters
list ThreadGroup: an array into which to put the list of thread groups
recurse boolean: if true, recursively enumerate all subgroups
Returns
int the number of thread groups put into the array
Throws
SecurityException if checkAccess determines that the current thread cannot access this thread group

enumerate

Added in API level 1
int enumerate (Thread[] list)

将此线程组及其子组中的每个活动线程复制到指定数组中。

此方法的调用的行为与调用完全相同

enumerate (list, true)

Parameters
list Thread: an array into which to put the list of threads
Returns
int the number of threads put into the array
Throws
SecurityException if checkAccess determines that the current thread cannot access this thread group

enumerate

Added in API level 1
int enumerate (Thread[] list, 
                boolean recurse)

将此线程组中的每个活动线程复制到指定数组中。 如果recursetrue ,则此方法递归枚举此线程组的所有子组,并且还包括对这些子组中每个活动线程的引用。 如果数组太短而不能容纳所有的线程,则额外的线程将被静默地忽略。

应用程序可能会使用activeCount方法来估计数组应该有多大,但是如果数组太短而无法保存所有线程,则额外的线程将被忽略。 如果获得此线程组中的每个活动线程都非常重要,则调用方应验证返回的int值是否严格小于list的长度。

由于这种方法固有的竞争条件,建议该方法仅用于调试和监控目的。

Parameters
list Thread: an array into which to put the list of threads
recurse boolean: if true, recursively enumerate all subgroups of this thread group
Returns
int the number of threads put into the array
Throws
SecurityException if checkAccess determines that the current thread cannot access this thread group

getMaxPriority

Added in API level 1
int getMaxPriority ()

返回此线程组的最大优先级。 作为该组的一部分的线程不能具有比最大优先级更高的优先级。

Returns
int the maximum priority that a thread in this thread group can have.

也可以看看:

getName

Added in API level 1
String getName ()

返回此线程组的名称。

Returns
String the name of this thread group.

getParent

Added in API level 1
ThreadGroup getParent ()

返回此线程组的父项。

首先,如果父项不是null ,则父线程组的checkAccess方法将不带参数调用; 这可能会导致安全异常。

Returns
ThreadGroup the parent of this thread group. The top-level thread group is the only thread group whose parent is null.
Throws
SecurityException if the current thread cannot modify this thread group.

也可以看看:

interrupt

Added in API level 1
void interrupt ()

中断此线程组中的所有线程。

首先,这个线程组的checkAccess方法被调用时没有参数; 这可能会导致安全异常。

然后,此方法在此线程组中的所有线程及其所有子组中调用 interrupt方法。

Throws
SecurityException if the current thread is not allowed to access this thread group or any of the threads in the thread group.

也可以看看:

isDaemon

Added in API level 1
boolean isDaemon ()

测试此线程组是否为守护线程组。 守护进程线程组在最后一个线程停止或其最后一个线程组被销毁时自动销毁。

Returns
boolean true if this thread group is a daemon thread group; false otherwise.

isDestroyed

Added in API level 1
boolean isDestroyed ()

测试该线程组是否已被销毁。

Returns
boolean true if this object is destroyed

list

Added in API level 1
void list ()

将有关该线程组的信息打印到标准输出。 此方法仅用于调试。

parentOf

Added in API level 1
boolean parentOf (ThreadGroup g)

测试此线程组是线程组参数还是其祖先线程组之一。

Parameters
g ThreadGroup: a thread group.
Returns
boolean true if this thread group is the thread group argument or one of its ancestor thread groups; false otherwise.

resume

Added in API level 1
void resume ()

此方法在API级别1中已弃用。
此方法仅与Thread.suspendThreadGroup.suspend一起使用,两者都已被弃用,因为它们固有地容易出现死锁。 详情请参阅suspend()

恢复此线程组中的所有线程。

首先,这个线程组的checkAccess方法被调用时没有参数; 这可能会导致安全异常。

然后该方法在该线程组中的所有线程及其所有子组中调用 resume方法。

Throws
SecurityException if the current thread is not allowed to access this thread group or any of the threads in the thread group.

也可以看看:

setDaemon

Added in API level 1
void setDaemon (boolean daemon)

更改此线程组的守护程序状态。

首先,这个线程组的checkAccess方法被调用时没有参数; 这可能会导致安全异常。

守护进程线程组在最后一个线程停止或其最后一个线程组被销毁时自动销毁。

Parameters
daemon boolean: if true, marks this thread group as a daemon thread group; otherwise, marks this thread group as normal.
Throws
SecurityException if the current thread cannot modify this thread group.

也可以看看:

setMaxPriority

Added in API level 1
void setMaxPriority (int pri)

设置组的最大优先级。 已经具有较高优先级的线程组中的线程不受影响。

首先,这个线程组的checkAccess方法被调用时没有参数; 这可能会导致安全异常。

如果参数 pri小于 MIN_PRIORITY或大于 MAX_PRIORITY ,则它被限制为这些值。

否则,此ThreadGroup对象的优先级设置为指定的pri和此线程组的父级的最大允许优先级中的较小者。 (如果此线程组是系统线程组,但没有父系,则其最大优先级设置为pri )然后,对于属于此线程组的每个线程组,以pri作为其参数递归地调用此方法。

Parameters
pri int: the new priority of the thread group.
Throws
SecurityException if the current thread cannot modify this thread group.

也可以看看:

stop

Added in API level 1
void stop ()

此方法在API级别1中已弃用。
这种方法本质上是不安全的。 详情请参阅stop()

停止此线程组中的所有线程。

首先,这个线程组的checkAccess方法被调用时没有参数; 这可能会导致安全异常。

然后,此方法在该线程组中的所有线程及其所有子组中调用 stop方法。

Throws
SecurityException if the current thread is not allowed to access this thread group or any of the threads in the thread group.

也可以看看:

suspend

Added in API level 1
void suspend ()

此方法在API级别1中已弃用。
这种方法本质上容易出现死锁。 有关详细信息,请参阅suspend()

暂停此线程组中的所有线程。

首先,这个线程组的checkAccess方法被调用时没有参数; 这可能会导致安全异常。

然后,此方法将在此线程组中的所有线程及其所有子组中调用 suspend方法。

Throws
SecurityException if the current thread is not allowed to access this thread group or any of the threads in the thread group.

也可以看看:

toString

Added in API level 1
String toString ()

返回此线程组的字符串表示形式。

Returns
String a string representation of this thread group.

uncaughtException

Added in API level 1
void uncaughtException (Thread t, 
                Throwable e)

当此线程组中的线程由于未捕获的异常而停止且该线程没有安装特定的 Thread.UncaughtExceptionHandler时,由Java虚拟机调用。

uncaughtException的方法 ThreadGroup执行以下操作:

  • If this thread group has a parent thread group, the uncaughtException method of that parent is called with the same two arguments.
  • Otherwise, this method checks to see if there is a default uncaught exception handler installed, and if so, its uncaughtException method is called with the same two arguments.
  • Otherwise, this method determines if the Throwable argument is an instance of ThreadDeath. If so, nothing special is done. Otherwise, a message containing the thread's name, as returned from the thread's getName method, and a stack backtrace, using the Throwable's printStackTrace method, is printed to the standard error stream.

应用程序可以在 ThreadGroup子类中重写此方法,以提供对未捕获异常的替代处理。

Parameters
t Thread: the thread that is about to exit.
e Throwable: the uncaught exception.

Hooray!