java ThreadGroup源码分析
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java ThreadGroup源码分析,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2708字,纯文字阅读大概需要4分钟。
内容图文
![java ThreadGroup源码分析](/upload/InfoBanner/zyjiaocheng/1129/0ff93955a3c34017bda12482a49e4eee.jpg)
使用:
![技术分享图片](/img/jia.gif)
![技术分享图片](/img/jian.gif)
1 import javax.swing.text.html.HTMLDocument.HTMLReader.IsindexAction; 2 3 public class Test { 4 5 public static void main(String[] args) { 6 7 ThreadGroup tg = new ThreadGroup("threadGroup-001"); 8 9 Thread t1 = new Thread(tg, new MyThread()); 10 t1.start(); 1112 Thread t2 = new Thread(tg, new MyThread()); 13 t2.start(); 1415// 返回线程组中活动线程的估计数16 System.out.println("active thread group: " + tg.activeCount()); 17// 返回此线程组中活动线程组的估计数18 System.out.println("activeGroupCount: " + tg.activeGroupCount()); 19// 检查当前运行的线程是否有权修改此线程组20 tg.checkAccess(); 21// 设置线程组的最高优先级22 tg.setMaxPriority(6); 23// 返回此线程组的最高优先级24 System.out.println("maxPriority: " + tg.getMaxPriority()); 25// 返回此线程组的名称26 System.out.println("thread group name: " + tg.getName()); 27// 返回此线程组的父线程组28 System.out.println(tg.getParent()); 29// 中断此线程组中的所有线程30 tg.interrupt(); 31// 更改此线程组的后台程序状态32 tg.setDaemon(true); 33// 测试此线程组是否为一个后台程序线程组34 System.out.println("is daemon: " + tg.isDaemon()); 35// 测试此线程组是否为线程组参数或其祖先线程组之一36 System.out.println("is parent: "+ tg.getParent().parentOf(tg)); 37// 打印线程组信息38 tg.list(); 39// 返回线程组的字符串表示形式40 System.out.println(tg.toString()); 41// 销毁此线程组及其所有子组42 tg.destroy(); 43// 测试此线程组是否已经销毁44 System.out.println(tg.isDestroyed()); 45// System.out.println(tg.);46 } 4748privatestaticclass MyThread extends Thread { 49 @Override 50publicvoid run() { 51 System.out.println("thread name: " + Thread.currentThread().getName()); 52 } 53 } 5455 }
一、构造函数
两种构造函数:
ThreadGroup(String name)
ThreadGroup(ThreadGroup parent, String name)
![技术分享图片](/img/jia.gif)
![技术分享图片](/img/jian.gif)
public ThreadGroup(String name) { this (Thread.currentThread().getThreadGroup(), name); }
![技术分享图片](/img/jia.gif)
![技术分享图片](/img/jian.gif)
1 public ThreadGroup(ThreadGroup parent, String name) { 2 this (checkParentAccess(parent), parent, name); 3 }
![技术分享图片](/img/jia.gif)
![技术分享图片](/img/jian.gif)
1 private ThreadGroup(Void unused, ThreadGroup parent, String name) { 2 this.name = name; 3this.maxPriority = parent.maxPriority; 4this.daemon = parent.daemon; 5this.parent = parent; 6 parent.add(this); 7 }
![技术分享图片](/img/jia.gif)
![技术分享图片](/img/jian.gif)
1 private final void add(ThreadGroup g){ 2 synchronized (this) { 3if (destroyed) { 4thrownew IllegalThreadStateException(); 5 } 6// 添加一个线程组到此线程组的groups数组中,groups初始容量为4,每次容量耗尽之后按2倍扩增。 7if (groups == null) { 8 groups = new ThreadGroup[4]; 9 } elseif (ngroups == groups.length) { 10 groups = Arrays.copyOf(groups, ngroups * 2); 11 } 12 groups[ngroups] = g; 1314// This is done last so it doesn‘t matter in case the 15// thread is killed16 ngroups++; 17 } 18 }
原文:https://www.cnblogs.com/natian-ws/p/10195184.html
内容总结
以上是互联网集市为您收集整理的java ThreadGroup源码分析全部内容,希望文章能够帮你解决java ThreadGroup源码分析所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。