天天看点

Java线程组(ThreadGroup)的概念以及代码演示1 概念2 构造器和常用方法3 使用

  本文详细介绍了Java中的线程组(ThreadGroup)的概念以及代码演示!

文章目录

  • 1 概念
  • 2 构造器和常用方法
  • 3 使用

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(如果创建的线程没有指定任何的组,那么这个线程默认在main线程组当中)。

如果有什么不懂或者需要交流,可以留言。另外希望点赞、收藏、关注,我将不间断更新各种Java学习博客!