Java-并发-线程组(ThreadGroup)的简介以及代码演示

概念

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线程组当中)。

发布了29 篇原创文章 · 获赞 47 · 访问量 8195

猜你喜欢

转载自blog.csdn.net/weixin_43767015/article/details/104961746