Код: Выделить всё
public static ExecutorService newCachedThreadPool() {
return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
60L, TimeUnit.SECONDS,
new SynchronousQueue());
}
< /code>
Итак, используя этот шаблон, чтобы продолжить для создания пула потоков с фиксированным размером: < /p>
new ThreadPoolExecutor(0, 3, 60L, TimeUnit.SECONDS, new SynchronusQueue());
< /code>
Теперь, если вы используете это, и отправите 3 задачи, все будет хорошо. Предоставление любых дальнейших задач приведет к отклоненным исключениям выполнения.new ThreadPoolExecutor(0, 3, 60L, TimeUnit.SECONDS, new LinkedBlockingQueue());
< /code>
приведет к тому, что все потоки выполняются последовательно. То есть пул потоков никогда не создаст более одного потока для выполнения ваших задач. Или, может быть, это намеренно? Или есть какой -то другой способ? из потоков, которые он может создать, и возможность продолжать стоять в очереди дополнительные задачи, как только он достигнет предела потока. Согласно ответу Сьли, это невозможно. Глядя на метод execute () Подробнее здесь: https://stackoverflow.com/questions/180 ... size-limit