模块  java.base
软件包  java.lang

Class ThreadGroup

  • 实现的所有接口
    Thread.UncaughtExceptionHandler

    public class ThreadGroup
    extends Object
    implements Thread.UncaughtExceptionHandler
    线程组表示一组线程。 此外,线程组还可以包括其他线程组。 线程组形成一个树,其中除初始线程组之外的每个线程组都有父节点。

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

    从以下版本开始:
    1.0
    • 构造方法详细信息

      • ThreadGroup

        public ThreadGroup​(String name)
        构造一个新的线程组。 此新组的父级是当前正在运行的线程的线程组。

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

        参数
        name - 新线程组的名称。
        异常
        SecurityException - 如果当前线程无法在指定的线程组中创建线程。
        从以下版本开始:
        1.0
        另请参见:
        checkAccess()
      • ThreadGroup

        public ThreadGroup​(ThreadGroup parent,
                           String name)
        创建一个新的线程组。 此新组的父级是指定的线程组。

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

        参数
        parent - 父线程组。
        name - 新线程组的名称。
        异常
        NullPointerException - 如果线程组参数为 null
        SecurityException - 如果当前线程无法在指定的线程组中创建线程。
        从以下版本开始:
        1.0
        另请参见:
        SecurityExceptioncheckAccess()
    • 方法详细信息

      • getName

        public final String getName()
        返回此线程组的名称。
        结果
        此线程组的名称。
        从以下版本开始:
        1.0
      • getParent

        public final ThreadGroup getParent()
        返回此线程组的父级。

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

        结果
        此线程组的父级。 顶级线程组是唯一的父级为null线程组。
        异常
        SecurityException - 如果当前线程无法修改此线程组。
        从以下版本开始:
        1.0
        另请参见:
        checkAccess()SecurityExceptionRuntimePermission
      • getMaxPriority

        public final int getMaxPriority()
        返回此线程组的最大优先级。 属于该组的线程的优先级不能高于最大优先级。
        结果
        此线程组中的线程可以具有的最大优先级。
        从以下版本开始:
        1.0
        另请参见:
        setMaxPriority(int)
      • isDaemon

        public final boolean isDaemon()
        测试此线程组是否为守护程序线程组。 守护程序线程组在其最后一个线程停止或其最后一个线程组被销毁时会自动销毁。
        结果
        true如果此线程组是守护程序线程组; 否则为false
        从以下版本开始:
        1.0
      • isDestroyed

        public boolean isDestroyed()
        测试此线程组是否已被销毁。
        结果
        如果此对象被销毁,则为true
        从以下版本开始:
        1.1
      • setDaemon

        public final void setDaemon​(boolean daemon)
        更改此线程组的守护程序状态。

        首先, checkAccess此线程组的checkAccess方法,不带参数; 这可能会导致安全异常。

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

        参数
        daemon - 如果为true ,则将此线程组标记为守护程序线程组; 否则,将此线程组标记为正常。
        异常
        SecurityException - 如果当前线程无法修改此线程组。
        从以下版本开始:
        1.0
        另请参见:
        SecurityExceptioncheckAccess()
      • setMaxPriority

        public final void setMaxPriority​(int pri)
        设置组的最大优先级。 线程组中已具有更高优先级的线程不受影响。

        首先, checkAccess此线程组的checkAccess方法,不带参数; 这可能会导致安全异常。

        如果pri参数小于Thread.MIN_PRIORITY或大于Thread.MAX_PRIORITY ,则组的最大优先级保持不变。

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

        参数
        pri - 线程组的新优先级。
        异常
        SecurityException - 如果当前线程无法修改此线程组。
        从以下版本开始:
        1.0
        另请参见:
        getMaxPriority()SecurityExceptioncheckAccess()
      • parentOf

        public final boolean parentOf​(ThreadGroup g)
        测试此线程组是线程组参数还是其祖先线程组之一。
        参数
        g - 一个线程组。
        结果
        true如果此线程组是线程组参数或其祖先线程组之一; 否则为false
        从以下版本开始:
        1.0
      • checkAccess

        public final void checkAccess()
        确定当前运行的线程是否具有修改此线程组的权限。

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

        异常
        SecurityException - 如果不允许当前线程访问此线程组。
        从以下版本开始:
        1.0
        另请参见:
        SecurityManager.checkAccess(java.lang.ThreadGroup)
      • activeCount

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

        返回的值只是一个估计值,因为当此方法遍历内部数据结构时,线程数可能会动态更改,并且可能会受到某些系统线程的影响。 此方法主要用于调试和监视目的。

        结果
        此线程组以及将此线程组作为祖先的任何其他线程组中的活动线程数的估计值
        从以下版本开始:
        1.0
      • enumerate

        public int enumerate​(Thread[] list)
        将此线程组及其子组中的每个活动线程复制到指定的数组中。

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

        enumerate (list, true)
        参数
        list - 要放置线程列表的数组
        结果
        放入数组的线程数
        异常
        SecurityException - 如果 checkAccess确定当前线程无法访问此线程组
        从以下版本开始:
        1.0
      • enumerate

        public int enumerate​(Thread[] list,
                             boolean recurse)
        将此线程组中的每个活动线程复制到指定的数组中。 如果recursetrue ,则此方法以递归方式枚举此线程组的所有子组,并且还包括对这些子组中每个活动线程的引用。 如果数组太短而无法容纳所有线程,则会以静默方式忽略额外的线程。

        应用程序可能会使用activeCount方法来估计数组应该有多大,但是如果数组太短而无法容纳所有线程,则会以静默方式忽略额外的线程。 如果获取此线程组中的每个活动线程至关重要,则调用者应验证返回的int值是否严格小于list的长度。

        由于此方法存在固有的竞争条件,因此建议仅将该方法用于调试和监视目的。

        参数
        list - 要放置线程列表的数组
        recurse - 如果为 true ,则递归枚举此线程组的所有子组
        结果
        放入数组的线程数
        异常
        SecurityException - 如果 checkAccess确定当前线程无法访问此线程组
        从以下版本开始:
        1.0
      • activeGroupCount

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

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

        结果
        此线程组作为祖先的活动线程组的数量
        从以下版本开始:
        1.0
      • enumerate

        public int enumerate​(ThreadGroup[] list)
        复制到此线程组及其子组中每个活动子组的指定数组引用。

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

        enumerate (list, true)
        参数
        list - 要放置线程组列表的数组
        结果
        放入数组的线程组数
        异常
        SecurityException - 如果 checkAccess确定当前线程无法访问此线程组
        从以下版本开始:
        1.0
      • enumerate

        public int enumerate​(ThreadGroup[] list,
                             boolean recurse)
        复制到此线程组中每个活动子组的指定数组引用。 如果recursetrue ,则此方法以递归方式枚举此线程组的所有子组,并且还包括对这些子组中每个活动线程组的引用。

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

        由于此方法存在固有的竞争条件,因此建议仅将该方法用于调试和监视目的。

        参数
        list - 要放置线程组列表的数组
        recurse - 如果是 true ,则递归枚举所有子组
        结果
        放入数组的线程组数
        异常
        SecurityException - 如果 checkAccess确定当前线程无法访问此线程组
        从以下版本开始:
        1.0
      • stop

        @Deprecated(since="1.2")
        public final void stop()
        Deprecated.
        This method is inherently unsafe. See Thread.stop() for details.
        停止此线程组中的所有线程。

        首先, checkAccess此线程组的checkAccess方法,不带参数; 这可能会导致安全异常。

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

        异常
        SecurityException - 如果不允许当前线程访问此线程组或线程组中的任何线程。
        从以下版本开始:
        1.0
        另请参见:
        SecurityExceptionThread.stop()checkAccess()
      • interrupt

        public final void interrupt()
        中断此线程组中的所有线程。

        首先, checkAccess此线程组的checkAccess方法,不带参数; 这可能会导致安全异常。

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

        异常
        SecurityException - 如果不允许当前线程访问此线程组或线程组中的任何线程。
        从以下版本开始:
        1.2
        另请参见:
        Thread.interrupt()SecurityExceptioncheckAccess()
      • suspend

        @Deprecated(since="1.2")
        public final void suspend()
        Deprecated.
        This method is inherently deadlock-prone. See Thread.suspend() for details.
        挂起此线程组中的所有线程。

        首先, checkAccess此线程组的checkAccess方法,不带参数; 这可能会导致安全异常。

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

        异常
        SecurityException - 如果不允许当前线程访问此线程组或线程组中的任何线程。
        从以下版本开始:
        1.0
        另请参见:
        Thread.suspend()SecurityExceptioncheckAccess()
      • resume

        @Deprecated(since="1.2")
        public final void resume()
        Deprecated.
        This method is used solely in conjunction with Thread.suspend and ThreadGroup.suspend, both of which have been deprecated, as they are inherently deadlock-prone. See Thread.suspend() for details.
        恢复此线程组中的所有线程。

        首先, checkAccess此线程组的checkAccess方法,不带参数; 这可能会导致安全异常。

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

        异常
        SecurityException - 如果不允许当前线程访问此线程组或线程组中的任何线程。
        从以下版本开始:
        1.0
        另请参见:
        SecurityExceptionThread.resume()checkAccess()
      • destroy

        public final void destroy()
        销毁此线程组及其所有子组。 此线程组必须为空,表示此线程组中的所有线程都已停止。

        首先, checkAccess此线程组的checkAccess方法,不带参数; 这可能会导致安全异常。

        异常
        IllegalThreadStateException - 如果线程组不为空或者线程组已被销毁。
        SecurityException - 如果当前线程无法修改此线程组。
        从以下版本开始:
        1.0
        另请参见:
        checkAccess()
      • list

        public void list()
        将有关此线程组的信息打印到标准输出。 此方法仅适用于调试。
        从以下版本开始:
        1.0
      • uncaughtException

        public void uncaughtException​(Thread t,
                                      Throwable e)
        当此线程组中的线程因未捕获的异常而停止时,由Java虚拟机调用,并且该线程没有安装特定的Thread.UncaughtExceptionHandler

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

        • 如果此线程组具有父线程组,则使用相同的两个参数调用该父线程的uncaughtException方法。
        • 否则,此方法检查是否安装了default uncaught exception handler ,如果安装,则使用相同的两个参数调用其uncaughtException方法。
        • 否则,该方法确定是否Throwable参数是的一个实例ThreadDeath 如果是这样,没有什么特别的。 否则,包含该线程的名称的消息,如从线程的返回getName方法,以及在堆栈中,使用ThrowableprintStackTrace方法,打印到standard error stream

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

        Specified by:
        uncaughtException在接口 Thread.UncaughtExceptionHandler
        参数
        t - 即将退出的线程。
        e - 未捕获的异常。
        从以下版本开始:
        1.0
      • allowThreadSuspension

        @Deprecated(since="1.2")
        public boolean allowThreadSuspension​(boolean b)
        Deprecated.
        The definition of this call depends on suspend(), which is deprecated. Further, the behavior of this call was never specified.
        由VM用于控制lowmem隐式挂起。
        参数
        b - 允许或禁止暂停的布尔值
        结果
        成功的真实
        从以下版本开始:
        1.1
      • toString

        public String toString()
        返回此Thread组的字符串表示形式。
        重写:
        toString在类 Object
        结果
        此线程组的字符串表示形式。
        从以下版本开始:
        1.0