ExecutorService — это подинтерфейс, который расширяет интерфейс Executor, добавляя к его базовому функционалу дополнительные возможности для управления жизненным циклом выполнения потоков.
Интерфейс Executor служит основой и имеет всего один метод:
execute(Runnable) — выполняет переданное задание Runnable в какой-то момент времени в будущемЭтот простой контракт отделяет отправку задач от механизмов их выполнения.
ExecutorService расширяет Executor и добавляет необходимые функции управления:
invokeAny() — выполняет коллекцию задач Callable и возвращает результат первого успешно завершённого заданияinvokeAll() — выполняет коллекцию задач Callable и ждёт, пока все завершатсяshutdown() — инициирует корректное завершение, отклоняя новые заданияawaitTermination() — блокирует поток до завершения всех задач или истечения таймаута| Функция | Executor | ExecutorService |
|---|---|---|
| Отправка задач | Только Runnable | Runnable и Callable |
| Управление жизненным циклом | Нет | Контроль завершения и остановки |
| Массовые операции | Не поддерживаются | Поддерживаются через invokeAny/invokeAll |
| Возвращаемые значения | Не применимо | Поддерживаются через Callable и Future |
Используй Executor для простого выполнения задач без ожидания результата. Используй ExecutorService, когда тебе нужно управлять пулами потоков, обрабатывать результаты задач или контролировать жизненный цикл executor'а. ExecutorService — это рекомендуемый выбор для большинства реальных приложений, которым требуется управление пулами потоков.
ExecutorService — это подинтерфейс, который расширяет Executor и предоставляет дополнительные возможности управления жизненным циклом, такие как shutdown() и awaitTermination().
Новый — ещё не проверен сообществом
Вы