线程组ThreadGroup
什么是ThreadGroup
线程组ThreadGroup表示一组线程的集合。
线程组是为了方便和统一多个线程的管理而产生的。我们知道,在一个 Java 程序运行的时候会默认创建一个线程,我们称其为主线程(即为执行 main方法的线程)。其实,在一个 Java 程序运行的时候也会创建一个线程组,而这个主线程正是属于这个线程中的。
public class ThreadGroupExample {
public static void main(String[] args) {
Thread curThread = Thread.currentThread();
ThreadGroup curGroup = curThread.getThreadGroup();
System.out.println(String.format("thread name is [%s], threadGroup name is [%s] ", curThread.getName(), curGroup.getName()));
}
}
//输出如下
thread name is [main], threadGroup name is [main]线程组中不仅可以包含线程,也可以包含线程组,这个有点类似于文件夹的概念,线程对应的就是文件,线程组对应的就是文件夹,文件夹中不仅可以包含文件,也可以包含文件夹。
ThreadGroup中主要属性:所属父线程组(parent)、名字(name)、其中线程的最大优先级(maxPriority)、是否已经被销毁(destroyed)、是否为守护线程组(daemon)。
当新建一个线程 / 线程组之后,如果你没有给这个新建的线程 / 线程组指定一个父线程组,那么其默认会将当前执行创建线程 / 线程组代码的线程所属的父线程组作为新的线程 / 线程组的父线程组。
同时,一个线程只有调用了其 start方法之后,其才真正算是被添加到了对应的线程组中。
ThreadGroup 主要API
使用场景
ThreadGroup的目的就是对一组线程进行统一管理,比如需要在某一时刻或满足某一条件时将一些线程都中断,或者对线程设置一些统一的属性,或者对一组线程中的异常进行统一处理等等,都可以考虑使用线程组。
TODO:用到的时候,再补充实例代码
参考
Last updated