美文网首页Java相关
Java - ThreadGroup

Java - ThreadGroup

作者: 万福来 | 来源:发表于2020-04-09 18:17 被阅读0次

Java - ThreadGroup

ThreadGroup介绍

线程组(ThreadGroup)简单来说就是一个线程集合,线程组的出现是为了更方便地管理线程。
线程组是父子结构的,一个线程组可以继承其他线程组,同时也可以拥有其他子线程组。从结构上看,线程组是一个树形结构,每个线程都隶属于一个线程组,线程组又有父线程组,这样追溯下去,可以追溯到一个根线程组——System线程组。

JVM内置线程组

  • system线程组:是用来管理处理JVM的系统任务的线程组,例如对象的销毁等。是所有线程组的根线程组;
  • main线程组:system线程组是main线程组的parent,是应用程序创建的线程组,主要用于执行main方法。
    可以通过测试代码查看内置线程组信息:
 public static void main(String[] args) {
        System.out.println(Thread.currentThread().getThreadGroup().getName());
        System.out.println(Thread.currentThread().getThreadGroup().getParent().getName());
        System.out.println(Thread.currentThread().getThreadGroup().getParent().getParent());
    }

控制台输出结果:

main
system
null

如何创建线程组

通过查看ThreadGroup的构造方法,发现主要有三个构造方法:

    /**
     * Creates an empty Thread group that is not in any Thread group.
     * This method is used to create the system Thread group.
     */
    private ThreadGroup() {     // called from C code
        this.name = "system";
        this.maxPriority = Thread.MAX_PRIORITY;
        this.parent = null;
    }
     public ThreadGroup(String name) {
        this(Thread.currentThread().getThreadGroup(), name);
    }
    public ThreadGroup(ThreadGroup parent, String name) {
        this(checkParentAccess(parent), parent, name);
    }
  • 第一个无参构造器是私有的,通过代码注释可以看到,这个构造方法应该是用来构造system线程组的,所以不对外提供;
  • 第二个构造器重载了ThreadGroup(ThreadGroup parent, String name),只不过是父线程组参数传入了当前线程所处的线程组,然后在传入一个自定义线程组名称;
  • 第三个构造器可以支持用户自定义新创建的线程组的父线程组和线程组名称。

所以创建线程组一共有两种方式,一种是只传入自定义线程组名称,则新创建的线程组的父线程组则是当前负责创建新线程组的线程所属于的线程组。如果在main方法创建一个自定义线程组,则新定义线程组的父线程组则是main线程组。

如何使用线程组

ThreadGroup提供了很多有用的方法,可以方便我们管理线程组中的所有线程。


image.png

比如interrupt(); 它可以将整个线程组的所有线程进行打断操作;方便我们对所有线程进行统一打断处理。

相关文章

  • Java - ThreadGroup

    Java - ThreadGroup ThreadGroup介绍 线程组(ThreadGroup)简单来说就是一个...

  • Java - ThreadGroup操作的坑

    Java - ThreadGroup操作的坑 Thread与ThreadGroup关系 在上一篇ThreadGro...

  • Java_多线程 (线程组)

    在java的多线程处理中有线程组ThreadGroup的概念,ThreadGroup是为了方便线程管理出现的,可以...

  • Java线程组和未处理的异常

    Java使用ThreadGroup来表示线程组,它可以对一批线程进行分类和管理,Java允许程序直接对线程组进行控...

  • 02 java线程-线程池与线程组

    java-线程组与线程池 线程组 Java中使用ThreadGroup来表示线程组,它可以对一批线程进行分类管理,...

  • Java 线程组

    java.lang.ThreadGroup Java进程中的每一条线程都属于某一线程组 如果线程实例化的时候没有指...

  • 六、【Java 并发】ThreadGroup 详解

    ThreadGroup 与 Thread 默认情况下,新的线程都会加入到创建它的线程(也就是父线程)所在的 gro...

  • Java线程池的理论与实践

    Java中的Thread与操作系统中的线程的关系 线程切换的各种开销 ThreadGroup存在的意义 使用线程池...

  • 03_线程组和线程优先级

    一、线程组 每个Thread必然存在于一个ThreadGroup中,Thread不能独立于ThreadGroup存...

  • 线程Thread中的ThreadGroup

    一,ThreadGroup线程组的基本介绍1.线程组ThreadGroup为线程服务,用户通过使用线程组的概念批量...

网友评论

    本文标题:Java - ThreadGroup

    本文链接:https://www.haomeiwen.com/subject/hzchmhtx.html