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

Класс Executors

Класс Executors - это утилитарный класс из пакета java.util.concurrent, который предоставляет набор фабричных методов для создания объектов ExecutorService, ScheduledExecutorService и других исполнителей. Он упрощает создание пулов потоков, избавляя разработчика от необходимости вручную конфигурировать параметры ThreadPoolExecutor. Класс содержит только статические методы и не может быть инстанцирован.

Основные методы класса Executors позволяют создать пул потоков фиксированного размера, кэшируемый пул, исполнитель с одним потоком, а также планировщик задач. Каждый метод возвращает объект, реализующий интерфейс ExecutorService или его наследника.

Синтаксис

Executors.newFixedThreadPool(int nThreads) Executors.newCachedThreadPool() Executors.newSingleThreadExecutor() Executors.newScheduledThreadPool(int corePoolSize) Executors.newVirtualThreadPerTaskExecutor()

Пример

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

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

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

"Task 1 is running" "Task 2 is running" "Task 3 is running" "Task 4 is running" "Task 5 is running"

Пример

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

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.newSingleThreadExecutor(); Future<Integer> future = executor.submit(() -> { return 12345; }); Integer res = future.get(); System.out.println(res); executor.shutdown(); } }

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

12345

Пример

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

import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Main { public static void main(String[] args) { ExecutorService executor = Executors.newCachedThreadPool(); executor.execute(() -> { System.out.println("Task A"); }); executor.execute(() -> { System.out.println("Task B"); }); executor.shutdown(); } }

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

"Task A" "Task B"

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

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