Соглашения об именах ExecutorService Java

1

Недавно я обнаружил, что использовал некоторые ExecutorServices (SingleThreadScheduledExecutor и newFixedThreadPool), но у меня нет никакого хорошего имени для них.

Существуют ли какие-либо рекомендации или соглашения об именах этих объектов? Я видел такие имена, как "workerThread", используемые для SingleThreadScheduledExecutors, верно ли это, поскольку они не являются точно потоками?

  • 0
    Почему не исполнитель ?
Теги:
multithreading
naming-conventions

2 ответа

4
Лучший ответ

Хотя это в основном основано на мнениях, я использую следующие условные обозначения в своем коде:

  • Поле или параметр, который ссылается на Executor или ExecutorService, называется executor или executorService. Тип исполнителя не должен быть выведен по имени поля, так как иначе вы не можете легко изменить реализацию исполнителя впоследствии.
  • Класс, который реализует Runnable или Callable для реализации долговременной операции, обычно получает Task суффикса (например, LoadTask, ComputationTask ,...). (Поскольку такая операция не является потоком, а выполняется потоком, и обычно нет сопоставления 1:1 между потоками и операциями, неправильно называть его потоком).

Это делает код действительно удобочитаемым, и он не делает никаких предположений об использовании потоков, например:

for (String fileName : fileNames) {
    executor.execute(new LoadTask(fileName));
}

(В этом примере могут выполняться все задачи загрузки последовательно, параллельно или что-либо между ними - в зависимости от типа используемого исполнителя).

Одна заметка о слове "поток":

Нить слова нигде не используется, кроме редкого случая, когда я должен либо подкласса из Thread либо создать поле, которое ссылается на (реальную) Thread:

public class WorkerThread extends Thread { ... }

или:

Thread thread = Thread.currentThread();
0

Этот вопрос схож, он может помочь вам.

Вы всегда можете построить строку, используя общее имя объекта + PID + что-то еще и хэш результат. Шансы столкновения хэшей довольно низки...

  • 0
    Я думаю, что вопрос касается соглашений об именах полей и классов, а не о том, как называть потоки.
  • 0
    гектометр Одной из возможностей может быть threadName_variableName или threadHash_variableName для соглашения

Ещё вопросы

Сообщество Overcoder
Наверх
Меню