Должны ли потоки в Java быть названы для более легкой отладки? - PullRequest
15 голосов
/ 01 июля 2010

Каковы лучшие практики именования потоков в Java? Есть ли какие-либо соглашения об именах, которым нужно следовать?

Ответы [ 5 ]

7 голосов
/ 01 июля 2010

Я бы сказал, что общая лучшая практика - «выбирайте добрые имена», это относится к переменным, методам, компьютерам, возможно, даже детям (просто спросите моего сына Герунда Фееравагаза Смита).

Так что да,если возможно, выберите значимые имена для своих тем.

Предположим, мы запросили соглашение об именах файлов или компьютеров.Вы ожидаете, что будет общеприменимый ответ?Я думаю, что вам нужно создать собственное соглашение, которое имеет смысл с типом потоков, которые вы создаете.

Я бы следовал этим общим принципам:

  • Коротко, давайте избегать действительно LongLamesWithManyProbblyIrreleventClauses-Thread-01
  • Имеет смысл, но примите, что у вас может быть пул потоков job-01, job-02
  • Сначала значимая часть

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

    имеет тенденцию плохо сортировать, поэтому предпочитайте Listener-http-01

5 голосов
/ 01 июля 2010

Да, именование потоков, безусловно, помогает в их идентификации, но с одним предупреждением : убедитесь, что дали им уникальные имена, потому что вы можете, если захотите (или, возможно, случайно), использовать то же самоеимя для нескольких потоков.

class Thread: у каждого потока есть имя для идентификации.Более одного потока могут иметь одно и то же имя.

Если несколько потоков могут иметь одно и то же имя, это может ухудшить ситуацию и привести к путанице, а не к отладке.

4 голосов
/ 01 июля 2010

Я работаю в основном над автономными Java-приложениями, и иногда полный дамп потока - это все, что нам нужно для устранения проблемы. Имена потоков здесь тоже важны. Это одна из тех вещей, о которых вы на самом деле не думаете, пока они вам не понадобятся, и все ваши темы называются «Тема-145» и т. Д.

Тем не менее, я не видел особых соглашений об именах. Используйте что-то, что вы узнаете позже, где вы вряд ли будете повторно использовать имена. Может быть, стоит пояснить по названию, сколько из этого потока вы ожидаете иметь активным в системе, чтобы вы могли позже сказать, есть ли у вас «утечка потоков».

4 голосов
/ 01 июля 2010

Я работаю в системе, в которой запущено несколько процессов Java.Используя log4j, я направляю весь вывод в один файл журнала.

Чтобы получить общее представление о том, откуда поступает вывод журнала, я использую флаг вывода потока источника log4java, который печатает имя потока источника перед сообщением отладки.

Так что для меня важно использовать хорошие имена потоков.

1 голос
/ 01 июля 2010

Да, именование потоков было бы хорошей практикой.Если вы использовали Eclipse Debug и если в вашем java-приложении реализованы потоки, вы можете ясно видеть потоки, работающие параллельно с некоторыми случайными именами, «Thread», за которым следует некоторая числовая последовательность.Если вы можете дать значимое имя (опять же, возможно, вам придется использовать последовательность, но она полностью настраивается и зависит от вас), это будет полезно во время отладки.

...