Большой Threadpool или дополнительное исполнение Executorservice, когда будет работать новый тип нити?

StackOverflow https://stackoverflow.com/questions/2825717

Вопрос

У меня есть вопрос, который связан с возможным накладным расходом ExecutorServiceS в Java.

Настоящая реализация имеет ExecutorService A вместимостью 5 нитей.

  • Он запускает потоки типа A.
  • тип A Темы выполняют чтение и запись базы данных.

Теперь нить типа B будет работать после некоторый нити типа A закончил.

  • Количество типов B Нитки, которые будут работать отличаться от времени.
  • тип B Темы делают некоторую файловую систему IO (не база данных).

Так что я должен

  • добавить новое ExecutorService обрабатывать тип B потоки
  • или я должен увеличить способность ExecutorService A и беги тип B Нити с этим тоже?

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

Это было полезно?

Решение

Я буду рекомендовать два ExecutorServices, тогда вы можете воспользоваться другим ExecutorServiceс предоставленным java.util.concurrent упаковка.

Это делает код проще, а накладные расходы игнорируются.

  • ExecutorService А с фиксированным пулом резьбы установлен на пять потоков.
  • ExecutorService б с кэшированным резцом пула.

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top