РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1062 of 1163 menu

Метод newCachedThreadPool

Метод newCachedThreadPool класса Executors создает кэшированный пул потоков. Такой пул переиспользует ранее созданные потоки, если они свободны, а если свободных потоков нет - создает новые. Потоки, которые не использовались в течение 60 секунд, автоматически завершаются и удаляются из пула. Метод не принимает параметров и возвращает объект типа ExecutorService.

Кэшированный пул хорошо подходит для выполнения большого количества коротких асинхронных задач. При этом важно понимать, что количество потоков в пуле не ограничено: если задачи поступают быстрее, чем успевают выполняться, пул будет создавать все новые и новые потоки.

Синтаксис

Executors.newCachedThreadPool()

Пример

Давайте создадим кэшированный пул потоков и отправим в него несколько задач:

import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Main { public static void main(String[] args) { ExecutorService executor = Executors.newCachedThreadPool(); for (int i = 1; i <= 3; i++) { int taskNumber = i; executor.execute(() -> { System.out.println("Task " + taskNumber + " is running"); }); } executor.shutdown(); } }

Результат выполнения кода:

"Task 1 is running" "Task 2 is running" "Task 3 is running"

Пример

Давайте отправим в кэшированный пул задачи, которые возвращают результат, и получим значения через объект Future:

import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; public class Main { public static void main(String[] args) throws Exception { ExecutorService executor = Executors.newCachedThreadPool(); Future<Integer> future = executor.submit(() -> { return 2 + 3; }); int res = future.get(); System.out.println(res); executor.shutdown(); } }

Результат выполнения кода:

5

Смотрите также

  • класс ExecutorService,
    который представляет пул потоков
  • метод newFixedThreadPool,
    который создает пул с фиксированным числом потоков
  • метод newSingleThreadExecutor,
    который создает пул с одним потоком
  • метод shutdown,
    который завершает работу пула потоков
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить