首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中了解ThreadGroup有用吗?

在Java中了解ThreadGroup有用吗?
EN

Stack Overflow用户
提问于 2011-06-22 12:44:20
回答 4查看 606关注 0票数 2

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

线程组表示一组线程。此外,线程组还可以包括其他线程组。线程组形成一个树,其中除初始线程组之外的每个线程组都有一个父线程组。

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

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-22 13:08:19

我发现它很方便,尽管它被窃听了。它对于提供管理内容b/c非常有用,所创建的线程将被添加到父线程的ThreadGroup中(并且可以有效地枚举)。它可以用来防止新的线程产生(但它没有记录或意图)。

不幸的是,ThreadGroup有相当多的bug,包括。破坏()方法

简而言之,如果您不准备编写中间件,就不要费心了。如果需要枚举应用程序中使用Thread.getAllStackTraces().keySet()的所有线程,则该方法有一个安全漏洞,但我不讨论这个部分。

编辑:我忽略了调试方面:如果调试工具允许按ThreadGroups进行树视图和分组(例如eclipse这样做),那么对于调试目的来说,ThreadGroup实际上是很有用的。如果使用得当,当前调试的模块/mbean/etc中的所有线程都应该位于同一组中。它允许更容易地跟踪线程泄漏(与查看其他100个线程相比)。

票数 4
EN

Stack Overflow用户

发布于 2011-06-22 12:52:51

ThreadGroup通常被认为是一个失败的实验。如果您的代码需要与Java PlugIn或WebStart环境交互,那么了解它是有用的。不然的话,我就不会费心了。

票数 0
EN

Stack Overflow用户

发布于 2011-06-22 12:53:53

首先,这几乎是没有意义的。很少有应用程序使用线程组,因此应用程序线程几乎总是位于同一个线程组中。

第二,我认为您引用的限制是指沙箱应用程序。根据ThreadGroup javadoc的其他部分,枚举线程组中的线程的能力由安全管理器控制。

第三,如果一个应用程序是沙箱,那么最好是限制它对沙箱之外的东西的了解。如果没有,那就没什么好隐瞒的了。

最后,如果您使用调试器,它将可以访问根线程组,因此不会受到此限制的阻碍.如果它真的存在。类似地,“主”线程将位于根线程组中。

正如@ that所说,线程组被认为是一个失败的实验,特别是因为它们所支持的方法(Thread.stop、Thread.destroy等)因其不安全而被废弃。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6440049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档