Каковы наилучшие практики вокруг имен нитей на Java? Существуют ли какие-либо соглашения об именах?Должны ли имена в Java быть названы для упрощения отладки?
ответ
Я бы сказал, что общая рекомендация «выбирать хорошие имена» относится к переменным, методам, компьютерам, возможно, даже к детям (просто спросите моего сына Герунду Экстравагазу Смит).
Так что да, выберите возможные имена для ваших потоков, если это возможно.
Предположим, мы попросили соглашение об именах для файлов или компьютеров. Ожидаете ли вы, что там будет общеприемлемый ответ? Я думаю, что вам нужно создать собственное соглашение, которое имеет смысл с тем потоком, который вы создаете.
Я бы следующие общие принципы:
- Короткие, позволяет избежать reallyLongNamesWithManyProbablyIrreleventClauses-Thread-01
- Значимое, но признают, что вы можете иметь пул потоков работы-01, работа-02
Наиболее значительная часть первая
01-http-Listener 01-rmi-Listener 02-http-Listener
имеет тенденцию сортировать плохо так предпочитают Слушатель HTTP-01
Я работаю над системой, в которой работает несколько процессов Java. Используя log4j, я направляю весь вывод в один файл журнала.
Чтобы получить общее представление о том, откуда идет вывод журнала, я использую флаг вывода исходного потока log4java, который печатает имя исходного потока перед сообщением об отладке.
Для меня важно использовать хорошие имена нитей.
Я работаю в основном с автономными приложениями Java, а иногда и с полным дампом потока - это все, что нужно для отладки проблемы. Имена тем жизненно важны и там. Они - одна из тех вещей, о которых вы действительно не думаете, пока они вам не нужны, и все ваши потоки называются «Thread-145» и т. Д.
Тем не менее, я не видел никаких конкретных соглашений об именах , Используйте то, что вы узнаете позже, где вы вряд ли будете повторно использовать имена. Возможно, было бы полезно указать, сколько из этого потока вы ожидаете иметь в системе, так что вы можете узнать, есть ли у вас «потоки утечек» позже.
Да, наименования нитей, безусловно, помогают идентифицировать их, но с одним озором: обязательно укажите им уникальные имена, потому что вы можете, если вы решите (или, возможно, случайно), использовать одно и то же имя для нескольких потоки.
class Thread
: Каждая нить имеет имя для идентификации. У более чем одного потока может быть одно и то же имя.
Предоставление нескольким темам одного и того же имени может ухудшить ситуацию и вызвать путаницу, а не помогать в отладке.
Да, именование потоков было бы хорошей практикой.Если вы использовали Eclipse Debug, и если в вашем приложении java реализованы потоки, вы можете четко видеть потоки, работающие параллельно с некоторыми случайными именами, «Thread», за которыми следует некоторая последовательность чисел. Если вы можете дать значимое имя (опять-таки вам, возможно, придется использовать последовательность, но это полностью настраивается и зависит от вас), это было бы полезно во время отладки.
- 1. Должны ли быть названы функции публикации Метеор?
- 2. Столбцы должны быть названы вручную в пандах?
- 3. Как должны быть названы конкретные файлы Linux?
- 4. Должны ли все проворные эпики быть названы в предложениях?
- 5. Должны ли имена быть в хорошем английском?
- 6. Переопределить IO для упрощения отладки?
- 7. Блестящий - все под-списки в «вариантах» должны быть названы?
- 8. При использовании конструктора форм должны быть названы ярлыки?
- 9. Должны ли имена регистрации BackgroundTask быть уникальными в разных приложениях?
- 10. Имена методов всегда должны быть глаголом?
- 11. Должны ли имена контроллеров быть уникальными даже в отдельных областях?
- 12. MySQL дублировать имена должны быть возвращены
- 13. Почему функции C не могут быть названы?
- 14. python: должны ли имена декораторов быть действиями или описаниями?
- 15. C++ #include имена макросов должны быть идентификаторами
- 16. Struct: имена полей должны быть строкой
- 17. Должны ли имена столбцов быть уникальными во всех таблицах?
- 18. Должны ли имена файлов классов Python быть camelCased?
- 19. FluentValidation: имена типов проверки должны быть уникальными
- 20. Должны быть названы столбцы в базе данных, имеющие отношения FK/PK?
- 21. Что касается R, то при определении функции замены аргументы должны быть названы как «х» и «значение»?
- 22. Должны ли маршруты быть вложенными для ассоциаций?
- 23. Должны ли плагины быть «безопасными для установки»?
- 24. Должны ли получатели/сеттеры быть в основном методе в Java?
- 25. Должны ли перечисления Java быть определены в их собственных файлах?
- 26. Как сохранить имена параметров для отладки?
- 27. У псевдонимов должны быть уникальные имена в соединении mysql
- 28. Должны ли быть исключены исключения
- 29. Должны ли редукторы быть вложенными?
- 30. Должны ли быть зашифрованы пароли, используемые для .htaccess?
Легкий способ получить уникальные имена для потоков - использовать ThreadFactoryBuilder от Guava. Вы можете вызвать '.setNameFormat (« MyThread-% s »), и он будет автоматически заполнять последовательные целые числа. http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/util/concurrent/ThreadFactoryBuilder.html#setNameFormat%28java.lang.String%29 –
Или, если вы не " t хотите импортировать целую библиотеку только для создания ThreadFactory, вы можете просто реализовать ThreadFactory. Sun's j.u.c.Executors $ DefaultThreadFactory предлагает приятную стартовую реализацию, которую довольно просто изменить. –