线程组ThreadGroup分析详解 多线程中篇(三)

 线程组,顾名思义,就是线程的组,逻辑类似项目组,用于管理项目成员,线程组就是用来管理线程。

每个线程都会有一个线程组,如果没有设置将会有些默认的初始化设置
而在java中线程组则是使用类ThreadGroup 进行抽象描述
既然线程组是用来管理线程的,自然更多的是一种管理维度的抽象,所以很多方法也都是这个理念
原文地址:image_5c5bc1e2_25a7
仔细看下这两个构造方法,其实只有一个了,那就是底层的私有的这一个
image_5c5bc1e2_7e2a
对于一个线程组来说,他拥有他自己的名字,也拥有他的优先级,也有是否是守护的说法
不同于线程,对于线程组来说,他是有记录自己的父线程组的,通过parent
另外,线程组也记录了自己下面有哪些线程组,使用数组记录,也就是构造方法中的  parent.add(this)
image_5c5bc1e2_41dc
所以一个线程组核心的信息是:名称、优先级、是否守护、父线程组、子线程组
image_5c5bc1e2_e8a
另外还有一个默认的构造方法,看注释,用来创建系统线程组
image_5c5bc1e2_71aa  

名称

线程组的名称借助于内部的name属性持有
通过构造方法可以设置名称
提供了get方法用于获取名称
image_5c5bc1e3_311e

优先级

此处的优先级,表示的是最大允许优先级,线程组内最大就允许这么大
里面所有的线程不能继续变大,不要认为是记录了里面所有的线程中最大的那个值是一个天花板,不是一个记录尺
image_5c5bc1e3_41bb

daemon

image_5c5bc1e3_6ba7

父线程组

对于线程组来说,是明确的记录了他的父
借助于parent这个属性值,可以获取一个线程组的父线程组,也可以用来确定是否是一个指定线程组的父或者祖先
image_5c5bc1e3_4090

子线程组

内部借助于ThreadGroup 数组维护内部的线程组,从这个数据组织结构来看,就很显然,线程组内可以有线程组,可以层层嵌套形成树状结构的
对于线程组的创建,他必然会有一个父线程组(不设置就是当前线程所在的线程组了,也可以简单说当前线程组)
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信