Encodera

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

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

Справочник Java

ExecutorService

Сервис, который выполняет задачи в пуле потоков.

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

Синтаксис

public interface ExecutorService extends Executor, AutoCloseable

Примеры

Задачи в пуле и сбор результатов:

void main() throws Exception {
    try (ExecutorService pool = Executors.newFixedThreadPool(3)) {
        List<Future<Integer>> results = new ArrayList<>();
        for (int n = 1; n <= 5; n++) {
            int x = n;
            results.add(pool.submit(() -> x * x));
        }
        for (Future<Integer> f : results) {
            IO.print(f.get() + " ");
        }
        IO.println("");
    }
}

Результат:

1 4 9 16 25

Примечания

Пул отделяет «что сделать» (задача) от «где выполнить» (потоки). Создаётся через фабрики Executors. С Java 19 сервис реализует AutoCloseable, и его удобно открывать в try-with-resources: при выходе из блока он дождётся всех задач. Без этого пул нужно закрыть через shutdown(), иначе программа может не завершиться.

См. также

  • Executors.newFixedThreadPool() — Создаёт пул из заданного числа потоков.
  • ExecutorService.submit() — Отправляет задачу в пул и сразу возвращает `Future` для её результата.
  • ExecutorService.close() — Закрывает пул и ждёт завершения всех задач; вызывается автоматически в try-with-resources.
  • Future.get() — Ждёт завершения задачи и возвращает её результат.

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

В учебнике

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

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

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