Executors.newCachedThreadPool()
позволяет создавать темы по запросу. Я думаю, что вы можете начать использовать это - я не могу увидеть, где указано, что это для коротких потоков, но я держу пари, что причина в том, что вы повторно используете доступные потоки, наличие коротких потоков позволяет вам сохранить количество одновременных активных темы довольно низкие.
Если у вас не запущено слишком много потоков (вы можете проверить это с помощью JVisualVM или JConsole), я бы предложил придерживаться этого решения - особенно потому, что число ожидаемых потоков не определено. Затем проанализируйте виртуальную машину и соответственно настройте ваш пул.
Для вопроса 2 - вы имели в виду что-то вроде Executors.newFixedThreadPool(int)
? Если да, помните, что если вы укажете количество потоков, которое вы определили при создании, ThreadPool
заставит потоки ждать - вместо newCachedThreadPool
, в котором новые потоки создаются динамически.