Должны ли имена в Java быть названы для упрощения отладки?

Каковы наилучшие методы использования именования нитей в Java? Существуют ли какие-либо соглашения об именах?

Ответы

Ответ 1

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

Итак, да, выберите возможные имена для ваших потоков, если это возможно.

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

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

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

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

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

Ответ 2

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

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

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

Ответ 3

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

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

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

Ответ 4

Я работаю в основном на автономных java-приложениях, и иногда полный дамп потока - это все, что нужно для отладки проблемы. Имена тем жизненно важны и там. Они - одна из тех вещей, о которых вы действительно не думаете, пока они вам не нужны, и все ваши потоки называются "Thread-145" и т.д.

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

Ответ 5

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