第七十三条 避免使用线程组

除了线程、锁、监视器外,系统还提供了一个基本的抽象,即线程组。线程组的目的是作为一种隔离的机制,但实际上却没达到这个目的。因为线程组 ThreadGroup 表示一组线程的集合,一旦这个线程归属到一个线程组之中后,这个线程就不能再更换其所在的线程组。这种就是把一条线程卡死在一个线程组中了,并非是隔离。但线程组有个好处:线程组可以进行复制,统一进行异常处理设置等。但是从线程安全性的角度来看,ThreadGroup API非常弱。为了得到一个线程组中的活动线程列表,你必须调用enumerate方法,以便容纳线程。但如果线程增加过快而线程组比较小,enumerate方法就会悄然的忽略掉无法再数组中容纳的线程。后期Java为什么没对它进行修复和优化,是因为线程组已经过时了,没必要修正了。系统提供了线程池的概念来实现我们所需要的功能,用线程池代替线程组,这是一个很好的选择。

总而言之,线程组并没有提供太多有用的功能,而且他们提供的许多功能还是有缺陷的。我们最好把线程组看做是一个不成功的试验,你可以忽略掉他们。如果你正在设计的一个类需要处理线程的逻辑组,或许就应该使用线程池executor。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值