Java中的线程是否应该被命名以便于调试?

Java中线程命名的最佳实践是什么? 是否有任何命名约定?

我会说一般的最佳实践是“选择好名字”,这适用于变量,方法,计算机,甚至可能是儿童(只要问我的儿子Gerund Extravagaza Smith)。

所以,如果可能的话,为你的线程选择有意义的名字。

假设我们要求文件或计算机的命名约定。 您是否期望有一个普遍适用的答案? 我认为您需要生成自己的约定,这对您创建的线程有意义。

我会遵循这些一般原则:

  • 简而言之,让我们避免真正的LongNamesWithManyProbablyIrreleventClauses-Thread-01
  • 有意义,但接受你可能有一个线程池job-01,job-02
  • 最重要的部分首先

    01-http-Listener 01-rmi-Listener 02-http-Listener 

    倾向于严重排序所以更喜欢Listener-http-01

是的,命名线程肯定有助于识别它们,但有一点需要注意 :确保给它们唯一的名称,因为如果您选择(或者可能是偶然),您可以对多个线程使用相同的名称。

class Thread :每个线程都有一个用于标识目的的名称。 多个线程可能具有相同的名称。

赋予多个线程相同的名称可能会使事情变得更糟并导致混淆,而不是帮助调试。

我在一个运行多个Java进程的系统上工作。 使用log4j,我将所有输出路由到单个日志文件。

为了大致了解日志记录输出的来源,我使用log4java的源线程输出标志,它在调试消息之前打印源线程名称。

所以对我来说,使用好的线程名称至关重要。

我主要在独立的Java应用程序上工作,有时完整的线程转储是我们调试问题的全部内容。 线程名称也很重要。 它们是你需要它们之前并没有真正考虑过的事情之一,所有的线程都被命名为“Thread-145”等。

也就是说,我没有看到任何特定的命名约定。 使用您稍后将会识别的内容,您不太可能重复使用名称。 从名称中清楚地知道您期望在系统中有多少线程可能是值得的,因此您可以稍后判断是否存在“线程泄漏”。

是的,命名线程是一个很好的做法。 如果你已经使用过Eclipse Debug,并且你的java应用程序已经实现了线程,你可以清楚地看到线程与一些随机名称并行运行,“Thread”后跟一些数字序列。 如果你能给出一个有意义的名字(你可能必须使用一个序列,但这完全可以自定义并依赖于你),它在调试时会很有用。