线程名称 - 您何时需要了解它们?

时间:2009-04-18 06:45:43

标签: multithreading

我刚才创建了关于naming conventions for threads的SO问题。问题是,“你应该如何命名一个帖子?”

回顾一下,线程名称仅在您必须读取线程名称时才重要。

您是否可以提供真实世界的示例,说明何时必须检查线程并依赖于它们的名称来区分它们?这是平台/框架无关的。

你是如何(在什么环境下)这样做的?

换句话说,在什么情况下你必须解决问题并且必须检查线程按名称,你是如何做到这一点的?

5 个答案:

答案 0 :(得分:3)

在java中查找连接泄漏时,跟踪对象以查看它所创建的线程有时很有用。在我们的例子中,它是Finalizer线程。这导致我们得出的结论是,事情正在收集垃圾,但没有足够快地完成。即一堆东西等待最终确定,这一切都在一个线程中完成。

因此,我们学到了不依赖于Finalize的教训。

答案 1 :(得分:2)

这个问题目前用'linux'标记没有明显的原因......无论如何,如果你使用Visual Studio,线程名称会出现在调试器的线程窗口中,所以如果你正在调试一个应用程序大量的线程,这个名称使得在调试器的这个窗口中找到“你关心的线程”非常容易。

简而言之,我只是使用它,因为它与调试器工具很好地交互。

答案 2 :(得分:1)

有时在Java EE应用程序服务器上,能够跟踪单个线程上的所有活动是有用的,并且这些通常由池子系统给出适当的名称,例如。 'http-25','http-12'等等。

答案 3 :(得分:0)

生成服务器的线程转储以确定挂起/减速的原因通常真的非常有用。在这种情况下,通常会有大量不同角色的线程。在Java应用程序中,您可能正在查看石英线程以及应用程序用于建立性能保证的可能不同的线程池。可以说线程池名称通常比实际线程名称更重要,但是如果您尝试识别死锁线程,则各个线程名称也可能很重要。由于线程通常具有指示其角色的名称,因此有助于了解正在发生的事情。

答案 4 :(得分:0)

我正在使用线程名来帮助调试使用Orocos工具链编写的多线程机器人控制应用程序的实时性能。每个组件都在一个单独的线程中运行,我将编写shell脚本,这些脚本使用通用工具来管理线程的优先级以及它们运行的​​内核(因此,间接地,哪些线程抢占其他线程,以及何时)。这样做的好处在于,您可以在程序运行时调整程序的性能,如果您还设置了连续的输出性能指标,这将特别有用。