Java多线程——ThreadGroup源码解读

ThreadGroup源码解读

在探究Thread类时,总是可以看到ThreadGroup的身影,但是ThreadGroup究竟是什么呢?以下是对其源码的解析
对源码的解析按照类的域、常用方法、与Thread类的关联几个方面来探索

ThreadGroup的域
名称备注发布情况
parent父线程组get
name名字get
maxPriority最大优先级
destroyed是否销毁get
daemon是否守护
vmAllowSuspension
nUnstartedThreads未开始线程数
nthreads存活线程数
threads[]线程
ngroups子线程组数
groups[]子线程组
常用方法
方法名参数作用备注
ThreadGroupString name创建一个线程组父线程组是当前线程的线程组
最大优先级、守护线程状态、虚拟机允许丢弃状态同父线程组
ThreadGroupThreadGroup parent, String name创建一个线程组最大优先级、守护线程状态、虚拟机允许丢弃状态同父线程组
parentOfThreadGroup g测试当前线程组是否是g或g的父辈线程组
checkAccess测试当前线程是否有权限修改这个线程组
activeCount查询当前线程组及其子线程组的存活线程数
enumerateThread list[], boolean recurse将此线程组中每个存活的线程复制到该数组中,如果recurse=true,该线程组的子线程组中的存活线程也会被移到这个数组中,如果数组不够大,那溢出的线程会被忽略
activeGroupCount返回存活的线程组及其子线程组的数量
enumerateThreadGroup list[], boolean recurse将此线程组中每个存活的子线程组复制到该线程组中,如果recurse=true,该子线程组的子线程组中的存活线程组也会被复制到这个线程组中,如果数组不够大,那溢出的线程组会被忽略
interrupt停止线程组中的所有线程同样作用于子线程组中的线程
~~stop停止线程组中的所有线程弃用,原因同Thread.stop
destroy销毁这个线程组及其子线程组,这个线程组必须为空,说明这个线程组中的所有的线程都已经停止了
uncaughtException使用Thread.UncaughtExceptionHandler
与Thread的关联
  • 线程初始化时,nUnstartedThreads++
  • 线程start时,nUnstartedThreads–,threads++,线程加入threads[]
  • 线程的未捕获异常为空时返回线程组未捕获异常

Github博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值