Java多线程学习笔记(二) ThreadGroup
2019-10-11 07:05
2051 查看
1. 引子
Thread类有多个构造函数,其中一个如下:
public Thread(ThreadGroup group, String name) { init(group, null, name, 0); }
传入一个ThreadGroup参数,表示当前线程所属的线程组。源码中上面的init最终实现如下:
private void init(ThreadGroup g, Runnable target, String name, long stackSize, AccessControlContext acc, boolean inheritThreadLocals) { ...... if (g == null) { g = parent.getThreadGroup(); } }
可知:如果没有设置这个线程组,那么创建的线程的线程组即为其父线程的线程组,也就是当前线程。如果当前线程是main线程,main线程的group名字也叫main,那么在main方法中创建的新线程的group也是main。本文就ThreadGroup类进行学习。
2. 创建ThreadGroup
线程有父子之称,线程组也有父子之称。
ThreadGroup类的构造函数有:
public ThreadGroup(ThreadGroup parent, String name); public ThreadGroup(String name) { this(Thread.currentThread().getThreadGroup(), name); }
构造函数可以指定当前创建的线程组的父线程组,如果没有指定就指定当前线程的线程组作为新创建的线程组的父线程组。
下面是一个demo进行验证,结果打印为true。
public static void main(String[] args) throws Exception { ThreadGroup threadGroup = Thread.currentThread().getThreadGroup(); ThreadGroup threadGroup1 = new ThreadGroup("threadGroup1"); System.out.println(threadGroup1.getParent() == threadGroup); }
2. ThreadGroup复制
一个线程组中可以添加多个线程和子线程组,可以使用其复制方法,复制出这些线程和线程组:
public int enumerate(Thread list[]); public int enumerate(Thread list[], boolean recurse);
参数recurse为true表示递归将所有子线程组中的线程也拷贝到数组中,如果没有这个参数,默认就是true。
除了拷贝线程组中的线程以外,还可拷贝线程组中的子线程组:
public int enumerate(ThreadGroup list[]); public int enumerate(ThreadGroup list[], boolean recurse);
recurse意思也是表示是否进行递归和拷贝。
3. 总结
线程组不是用来管理线程的,而是针对线程的一次组织。
相关文章推荐
- java.lang.ThreadGroup
- Java线程基础(四):ThreadGroup、Volatility
- Java多线程学习与总结(ThreadGroup)
- 【Java并发系列01】Thread及ThreadGroup杂谈
- Thinking in java笔记: 关于thread group
- Java高并发编程学习--13. 线程的ThreadGroup的复制
- java学习笔记82--ThreadGroup线程组
- Java多线程之---ThreadGroup 管理Thread
- Java多线程之ThreadGroupDemo
- Java高并发编程学习--12. 线程的ThreadGroup
- java线程组(ThreadGroup)
- Java并发04:Thread的基本方法(1)-Name、ThreadGroup、activeCount、isAlive、守护线程等
- java多线程学习笔记(一) ——Thread
- java基础--27.了解线程组ThreadGroup
- Java并发编程之ThreadGroup
- 博弈Java讲义 - Java线程之ThreadGroup
- Java多线程之---ThreadGroup 管理Thread
- Java ThreadGroup
- Java高并发编程学习--15. 线程的ThreadGroup的操作
- Java多线程之---ThreadGroup 管理Thread