Java多线程(四) 管理多线程

209 阅读2分钟

这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战

前言

之前我们讲了在java中如何创建线程以及如何使用线程完成初步的操作,这章节我们讲一下线程组。

image.png

初识

多线程,多线程,线程肯定不会只有一两个,在一个进程中可以开辟很多个线程,这取决于进程的地址空间。假设我们现在有1000个线程,然后每个每个线程都是分散的,这样执行起来我们就找不到到底是那个线程做了什么事。为了方便理解我说一个比喻,假设我们现在有一个公司,公司有1000个员工,每个员工都是同等单位,然后你负责发布任务,发布任务后由1000个员工执行任务,你发布任务给员工,它们虽然能执行任务,但是你就不知道到底是谁执行了,因为人太多了你也不知道是谁拿走了任务或者任务又被他们私底下谁分掉了,这个时候在公司创立部门,软件部,硬件部,生产部,事业部,把人员都归并在一个组内。这样你发布软件任务,软件部门过来接到任务,它们部门的人就会开始执行任务,由于你分组了,所以你不用找1000个人问谁做了这个任务,你很明确只用找软件部的人问就好了。所以线程组的出现就是---方便管理。

线程组

线程组,顾名思义肯定是线程的一个集合,没错,在java中线程组其实是一树的集合,既然是树,那就意味着每一个线程组都有一个父类节点。

线程运行中途不能改变它所属的线程组,线程只要了所在的线程组他就不能更改了,必须要等到线程结束。

线程组的创建非常简单:

new ThreadGroup('MouthGroup')

创建后的线程组,默认链接到当先线程的线程组下面,组成一个线程组树。详细下一章节会提到

总结

  1. 线程组可以方便我们管理线程的运作,也可以快速定位某一线程
  2. 线程组的结构是树,为什么是树呢?下一期我们看看他的源码看一下ThreadGroup的构造方法你就懂了