Часто задаю данный вопрос на интервью джавистам, и 9 из 10 отвечают примерно так: Размер пула задаем по количеству ядер процессора, а задавать больше смысла не имеет, так как все ядра будут заняты Так это или нет - давайте разбираться. Для наглядности запишем утверждение приведенное выше в виде формулы: Теперь давайте поразмышляем, какими вообще могут быть задачи, которые будут запускаться в нашем пуле: Глядя на Формулу №1 видим, что данные особенности никак не учтены, и имея задачи с большим числом задержек и большой длительностью, получим, что все потоки пула будут заняты ожиданием, а утилизация процессора около нулевая. Давайте рассмотрим другую формулу, в которой уже учитываются время ожидания и время вычислений: Рассмотрим Формулу №2 на примерах: Пример 1: countCpu = 8 Twait = 750ms Tcalc = 250ms poolSize = 16 * ((750/250)+1) = 64 Пример 2: countCpu = 8 Twait = 0ms Tcalc = 500ms poolSize = 16 * ((0/250)+1) = 16 Из Примера 2 видим, что Формула №1 является частным случаем Формул