线程之间实际上是相互独立的。为了保持系统的处理效率,线程之间其实并没有所谓父子关系,你无法从一个“子”线程找到启动它的“父”线程。但是为了在调试程序的时候更清楚的了解线程之间的调用,Java 提供了 ThreadGroup 这样一个结构。关于 ThreadGroup 我不多说了因为你自己有文档可参考,不过你应该也注意到了 ThreadGroup 是一个“向下引用”的结构,只能从上往下遍历,不能从下往上回溯。这样设计的原因,是为了防止“上级”线程被“下级”引用而无法有效的被 GC 回收。相关参考

解决方案 »

  1.   

    线程之间其实并没有所谓父子关系,这个能理解,一个线程是不知道哪个线程把它启动的,除非人为把这个“父线程”的信息传递进来。ThreadGroup不能从下往上回溯是什么意思,我感觉正好相反啊,它不是可以getParent()吗,但没有getChildren()。还有文档中那句“允许线程访问有关自己的线程组的信息,但是不允许它访问有关其线程组的父线程组或其他任何线程组的信息”,还是不知道什么意思?