Java相关

Java - ThreadGroup

2020-04-09  本文已影响0人  万福来

Java - ThreadGroup

ThreadGroup介绍

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

JVM内置线程组

 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);
    }

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

如何使用线程组

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


image.png

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

上一篇 下一篇

猜你喜欢

热点阅读