Ответ
ExecutorService — это высокоуровневый интерфейс Java Concurrency API для управления пулом потоков (thread pool). Он абстрагирует ручное создание и управление потоками, предоставляя механизм для асинхронного выполнения задач.
Ключевые возможности:
- Управление пулом: Создание пулов с фиксированным, кэшируемым или одиночным потоком.
- Отправка задач: Прием задач
RunnableиCallableдля выполнения. - Контроль выполнения: Возврат объекта
Futureдля отслеживания статуса и получения результата. - Жизненный цикл: Методы для graceful (
shutdown()) и принудительной (shutdownNow()) остановки пула.
Пример использования:
// 1. Создание пула из 4 потоков
ExecutorService executor = Executors.newFixedThreadPool(4);
// 2. Отправка задачи на выполнение
Future<Integer> future = executor.submit(() -> {
// Длительная операция
Thread.sleep(1000);
return 42;
});
// 3. Получение результата (блокирующий вызов)
Integer result = future.get();
System.out.println("Result: " + result);
// 4. Завершение работы пула
executor.shutdown();
Почему это важно: ExecutorService повышает производительность приложения за счет повторного использования потоков, предотвращает истощение ресурсов и упрощает написание конкурентного кода. Используется повсеместно — от обработки HTTP-запросов в серверах до параллельной обработки данных.