Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

Executors.newFixedThreadPool()

Создаёт пул из заданного числа потоков.

Доступно с: Java 1.5

Синтаксис

public static ExecutorService newFixedThreadPool(int nThreads)

Параметры

ПараметрТипОписание
nThreadsintКоличество потоков в пуле.

Возвращаемое значение

ExecutorServiceПул с фиксированным числом потоков.

Примеры

Пул по числу ядер для вычислений:

void main() throws Exception {
    int cores = Runtime.getRuntime().availableProcessors();
    try (var pool = Executors.newFixedThreadPool(cores)) {
        Future<Long> sum = pool.submit(() -> LongStream.rangeClosed(1, 1_000_000).sum());
        IO.println(sum.get());
    }
}

Результат:

500000500000

Примечания

Если задач больше, чем потоков, лишние ждут в очереди. Для вычислительных задач число потоков обычно равно числу ядер (availableProcessors()). Для задач, которые в основном ждут (сеть, файлы), удобнее newVirtualThreadPerTaskExecutor().

См. также

  • ExecutorService — Сервис, который выполняет задачи в пуле потоков.
  • Executors.newVirtualThreadPerTaskExecutor() — Создаёт сервис, который запускает каждую задачу в отдельном виртуальном потоке.
  • ExecutorService.submit() — Отправляет задачу в пул и сразу возвращает `Future` для её результата.

Вопросы и ответы по теме

В учебнике

  • Пулы потоков и ExecutorService — ExecutorService в Java — пулы потоков, submit, Callable и Future, invokeAll, обработка ошибок в задачах, тайм-ауты и закрытие пула.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.