2010-05-13 3 views
3

У меня возник вопрос, связанный с возможными накладными расходами ExecutorService s на Java.Bigger threadpool или дополнительный ExecutorService при запуске нового типа потоков?

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

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

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

  • Число типов B Происходящие потоки отличаются от времени.
  • тип B потоки выполняют некоторую файловую систему IO (не базу данных).

Так я должен

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

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

ответ

4

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

Это делает код проще, а накладные расходы невелики.

  • ExecutorService a с фиксированным пулом потоков, установленным на пять потоков.
  • ExecutorService b с пулом кешированных потоков.
+0

Я попробую кеш-поток, спасибо! –

1

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

+0

это рассуждение имеет смысл. Я сделаю еще один ExecutorService, потому что он чувствует себя как чистый код в целом. –

Смежные вопросы