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

par*_*rkr 15 java multithreading naming-conventions

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

djn*_*jna 7

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

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

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

我会遵循这些一般原则:

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

    01-http-Listener 
    01-rmi-Listener
    02-http-Listener
    
    Run Code Online (Sandbox Code Playgroud)

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


pol*_*nts 5

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

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

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

  • 获取线程唯一名称的简单方法是使用Guava的ThreadFactoryBuilder.你可以调用`.setNameFormat("MyThread-%s"),它会自动填充连续的整数.http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/util/concurrent/ThreadFactoryBuilder.html#setNameFormat%28java.lang.String%29 (4认同)