Большой Threadpool или дополнительное исполнение Executorservice, когда будет работать новый тип нити?
-
26-09-2019 - |
Вопрос
У меня есть вопрос, который связан с возможным накладным расходом ExecutorService
S в Java.
Настоящая реализация имеет ExecutorService A
вместимостью 5 нитей.
- Он запускает потоки типа
A
. - тип
A
Темы выполняют чтение и запись базы данных.
Теперь нить типа B
будет работать после некоторый нити типа A
закончил.
- Количество типов
B
Нитки, которые будут работать отличаться от времени. - тип
B
Темы делают некоторую файловую систему IO (не база данных).
Так что я должен
- добавить новое
ExecutorService
обрабатывать типB
потоки - или я должен увеличить способность
ExecutorService A
и беги типB
Нити с этим тоже?
Я думаю, что для Java может быть несколько дополнительных накладных расходов ExecutorService
S, но с другой стороны, общее количество нитей увеличится в любом случае. Это имеет значение вообще?
Решение
Я буду рекомендовать два ExecutorServices
, тогда вы можете воспользоваться другим ExecutorService
с предоставленным java.util.concurrent
упаковка.
Это делает код проще, а накладные расходы игнорируются.
ExecutorService
А с фиксированным пулом резьбы установлен на пять потоков.ExecutorService
б с кэшированным резцом пула.
Другие советы
Если вы говорите о 5 нитках, и вы не устанавливаете емкость пула резьбы, я бы хотел сказать, что накладные Woulld являются незначительными в любом случае, и вы должны просто пойти, чтобы быть прощественным путем.