Java编程语言使用ThreadGroup来管理彼此之间的线程访问权限:

我想我理解,但这有什么用吗?我想知道从调试的角度来看,揭示当前的ThreadGroup结构及其元素(即线程和其他ThreadGroup)是否包含任何信息。

最佳答案

我发现它很方便,尽管它已经很麻烦了。对于提供管理内容b/c很有用,创建的线程将被添加到父线程的ThreadGroup中(并且可以被有效地枚举)。它可以用来防止新的Thread产生(但未记录在案或无意使用)。

不幸的是,ThreadGroup有很多错误,包括。 destroy()方法。

简而言之,如果您不打算编写中间件,请不要打扰。如果您需要使用Thread.getAllStackTraces().keySet()枚举应用程序中的所有线程,尽管该方法存在安全漏洞,但我不在此讨论。

编辑:我错过了调试方面:
如果调试工具允许通过ThreadGroup进行树 View 和分组(例如eclipse这样做),则ThreadGroup实际上对于调试目的很有用。如果您正确使用它,则当前已调试模块/mbean/etc中的所有线程应位于同一组中。它可以更轻松地跟踪线程泄漏(与查看其他一百个线程相比)

09-25 15:17