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. 关于Apache Commons-Lang3的使用

    在日常工作中,我们经常要使用到一些开源工具包,比如String,Date等等.有时候我们并不清楚有这些工具类的存在,造成在开发过程中重新实现导致时间浪费,且开发的代码质量不佳.而apache其实已经提 ...

  2. ios Alamofire网络插件的使用

    pod 'Alamofire' import Alamofire let headers:HTTPHeaders = [ "aa":"bb" ] let par ...

  3. ABC:Meaningful Mean

    题目描述 You are given an integer sequence of length N, a= {a1,a2,…,aN}, and an integer K. a has N(N+1)⁄ ...

  4. MergeSort(归并排序)原理及C++代码实现

    归并排序利用分治策略进行排序.原理如下 分解:分解待排的n个元素的序列成个具n/2个元素的两个子序列. 解决:使用归并排序递归地排序两个子序列. 合并:合并两个已排序的子序列以产生已排序的答案. 归并 ...

  5. jmeter json乱码

    0 环境 系统环境:win7 1 操作 1 找到jmeter.properties 找到jmeter下的bin目录jmeter.properties文件 例如apache-jmeter-\bin\jm ...

  6. 微弱信号二次谐波检测的FPGA的实现-总结

    首先还是把握大的系统框架: 我要实现的部分不包括DA以及AD的转换,主要是将SSP接收到的数据送入到FIFO中,然后经过FIR带通滤波器的处理后对该信号计算幅值并做PSD,然后处理的信号经过积分够一方 ...

  7. mysql 实现类似开窗函数的功能

    mysql8 已经支持开窗函数 https://dev.mysql.com/doc/refman/8.0/en/window-functions.html ———————————————— sql s ...

  8. Redis为什么会比MySQL快?

    1.Redis是基于内存存储的,MySQL是基于磁盘存储的 2.Redis存储的是k-v格式的数据.时间复杂度是O(1),常数阶,而MySQL引擎的底层实现是B+Tree,时间复杂度是O(logn), ...

  9. [LC] 82. Remove Duplicates from Sorted List II

    Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numb ...

  10. .net批量插入数据库,SqlBulkCopy方法

    /// <summary> /// 把数据插入LessonQuestion表 /// </summary> /// <param name="lessontit ...