ThreadGroup

许多线程聚集成组即线程组,

线程组可以包括其他线程组,线程组随着层级的增加可形成树,其中的每个线程组除了初始化线程组外都存在着父线程组。

线程允许访问关于它自己的线程组的信息,但不允许访问其线程组的父线程组或任何其他线程组的信息。

当需要锁定策略的时候,线程组成子线程组到父线程组是尽可能地锁定一个级别的树,但是不锁住树的底部。这样可以限制需要持有的锁的数量,特别是避免为根线程组(或全局锁)获取锁,这锁将是多处理器系统中许多线程组争用的资源。这样的锁定策略通常会导致获取一个线程组状态的快照,并在该快照中工作,而不是在执行的时候将线程组锁住。

  1.ThreadGroup初始化

  ThreadGroup有提供构造方法,可以自行进行初始化设置或者自行交给Thread处理,因为在new Thread()时会默认初始化线程组ThreadGroup。关于ThreadGroup的初始化可以参考Thread的源码解析:http://ericchunli.iteye.com/blog/2394118。

  2.ThreadGroup源码解析

  public class ThreadGroup implements Thread.UncaughtExceptionHandler {

  private final ThreadGroup parent; // 父线程组

  String name; // 线程组名称

  int maxPriority; // 线程组优先级

  boolean destroyed; // 是否已经被销毁

  boolean daemon; // 守护线程

  boolean vmAllowSuspension; // 供VM使用

  int nUnstartedThreads = 0; // 线程组中未启动的线程

  int nthreads; // 线程数量

  Thread threads[]; // 线程

  int ngroups; // 线程组数量

  ThreadGroup groups[]; // 线程组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值