线程组介绍
线程组(ThreadGroup
)简单来说就是一个线程集合。线程组的出现是为了更方便地管理线程。
线程组是父子结构的,一个线程组可以集成其他线程组,同时也可以拥有其他子线程组。从结构上看,线程组是一个树形结构,每个线程都隶属于一个线程组,线程组又有父线程组,这样追溯下去,可以追溯到一个根线程组——System线程组。
下面介绍一下线程组树的结构:
- JVM创建的system线程组是用来处理JVM的系统任务的线程组,例如对象的销毁等。
- system线程组的直接子线程组是main线程组,这个线程组至少包含一个main线程,用于执行main方法。
- main线程组的子线程组就是应用程序创建的线程组。
你可以在main方法中看到JVM创建的system线程组和main线程组:
public static void main(String[] args) {
ThreadGroup mainThreadGroup=Thread.currentThread().getThreadGroup();
ThreadGroup systenThreadGroup=mainThreadGroup.getParent();
System.out.println("systenThreadGroup name = "+systenThreadGroup.getName());
System.out.println("mainThreadGroup name = "+mainThreadGroup.getName());
}
console输出:
systenThreadGroup name = system
mainThreadGroup name = main
一个线程可以访问其所属线程组的信息,但不能访问其所属线程组的父线程组或者其他线程组的信息。
线程组的构造
java.lang.ThreadGroup
提供了两个构造函数:
Constructor | Description |
---|---|
ThreadGroup(String name) | 根据线程组名称创建线程组,其父线程组为main线程组 |
ThreadGroup(ThreadGroup parent, String name) | 根据线程组名称创建线程组,其父线程组为指定的parent线程组 |
下面演示一下这两个构造函数的用法:
public static void