Encodera

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

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

Справочник Java

ExecutorService.close()

Закрывает пул и ждёт завершения всех задач; вызывается автоматически в try-with-resources.

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

Синтаксис

default void close()

Примеры

После блока try все задачи гарантированно выполнены:

void main() {
    var results = new ConcurrentLinkedQueue<Integer>();
    try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
        for (int i = 1; i <= 3; i++) {
            int n = i;
            executor.submit(() -> results.add(n * 10));
        }
    }
    IO.println(results.stream().sorted().toList());
}

Результат:

[10, 20, 30]

Примечания

close() вызывает shutdown() и ждёт окончания всех задач. Порядок, в котором задачи выполнились, не определён, поэтому в примере результат сортируется перед печатью.

См. также

  • ExecutorService.shutdown() — Закрывает пул для новых задач и даёт уже принятым доработать.
  • try-with-resources — Блок `try`, который сам закрывает открытые ресурсы — файлы, соединения, потоки.
  • ExecutorService — Сервис, который выполняет задачи в пуле потоков.

В учебнике

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

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

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