小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
详细介绍了Java中的线程组(ThreadGroup)的概念以及代码演示!
1 概念
public class ThreadGroup
extends Object
implements Thread.UncaughtExceptionHandler
线程组:多个线程存放在一个组中,方便对线程的统一管理。Java中具有专门的线程组对象,对应ThreadGroup类。如果创建的线程没有指定任何的组,那么这个线程在main组当中。
2 构造器和常用方法
构造器:
/**
* 创建一个新线程组。新线程组的父线程组是目前正在运行线程的线程组。
*
* @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()
3 使用
常常结合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线程组当中)。
如果有什么不懂或者需要交流,可以留言。另外希望点赞、收藏、关注,我将不间断更新各种Java学习博客!