Больший пул потоков или дополнительный ExecutorService, когда будет запущен новый вид потока? - PullRequest
3 голосов
/ 13 мая 2010

У меня есть вопрос, связанный с возможными издержками ExecutorService s в Java.

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

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

Теперь поток типа B будет запущен после завершения некоторых потоков типа A.

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

Так я должен

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

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

Ответы [ 2 ]

4 голосов
/ 13 мая 2010

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

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

  • ExecutorService a с фиксированным пулом потоков, установленным на пять потоков.
  • ExecutorService b с пулом кэшированных потоков.
1 голос
/ 13 мая 2010

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

...