概念
public class ThreadGroup
extends Object
implements Thread.UncaughtExceptionHandler
线程组:多个线程存放在一个组中,方便对线程的统一管理。Java中具有专门的线程组对象,对应ThreadGroup类。如果创建的线程没有指定任何的组,那么这个线程在main组当中。
构造器和常用方法
构造器:
/**
* 创建一个新线程组。新线程组的父线程组是目前正在运行线程的线程组。
*
* @param name 新线程组的名称
*/
public ThreadGroup(String name)
/**
* 创建一个新线程组。新线程组的父线程组是指定的线程组。
*
* @param parent 父线程组
* @param name 新线程组的名称。
*/
public ThreadGroup(ThreadGroup parent, String name)
常用方法:
// 获取当前线程所在线程组的活动线程总数(估计)。
threadGroup.activeCount() //或者下面的方法
Thread.activeCount()
//获取该线程组的父线程组
threadGroup.getParent()
//获取当前线程所属线程组
Thread.currentThread().getThreadGroup()
使用
常常结合Thread的构造器进行使用,用来对一批线程进行分组,方便追踪。
//获取main线程的线程组
System.out.println(Thread.currentThread().getThreadGroup());
//获取当前线程的线程组中的活动线程数
System.out.println(Thread.activeCount());
//获取main线程的线程组信息
System.out.println(Thread.currentThread());
//新建线程组
ThreadGroup threadGroup = new ThreadGroup("新线程组");
//获取该线程组的父线程组,可以看到,它的父线程组是main线程组
ThreadGroup parent = threadGroup.getParent();
System.out.println(parent);
//新建子线程,加入该线程组
Thread thread = new Thread(threadGroup, "子线程");
//打印该子线程信息
System.out.println(thread);
打印的线程对象的格式:
Thread[子线程,5,新线程组]
Thread[main,5,main]
其中:
Thread-0——线程的名称
5——线程默认的优先级
main——线程所在的组:main(如果创建的线程没有指定任何的组,那么这个线程默认在main线程组当中)。