第73条:避免使用线程组
除了线程、锁、监视器外,系统还提供了一个基本的抽象,即线程组(thread group)。线程组的目的是作为一种隔离applet(小程序)的机制,但实际上却没达到这个目的。它没有提供线程安全性功能,而是 允许同时把线程的某些基本功能应用到一组线程上,基本上已经废弃了。
从线程安全性的角度来看,ThreadGroup API非常弱。为了得到一个线程组中的活动线程列表,你必须调用enumerate方法,以便容纳线程。但如果线程增加了,而线程组还比较小,enumerate方法就会悄然的忽略掉无法再数组中容纳的线程。
后期Java为什么没对它进行修复和优化,是因为线程组已经过时了,没必要修正了。
总而言之,线程组并没有提供太多有用的功能,而且他们提供的许多功能还是有缺陷的。我们最好把线程组看做是一个不成功的试验,你可以忽略掉他们。如果你正在设计的一个类需要处理线程的逻辑组,或许就应该使用线程池executor(68条)。