Вопрос проверяет знание стандартных инструментов Java для управления многопоточными задачами.
ExecutorService — это интерфейс для управления выполнением задач в пуле потоков.
Он отделяет постановку задачи от ее выполнения.
ExecutorService сам управляет потоками и очередями.
Это делает код проще и безопаснее.
ExecutorService — это базовая абстракция для работы с многопоточностью в Java.
ExecutorService — это интерфейс, который принимает задачи и выполняет их с помощью управляемого пула потоков.
Разработчик:
Передает задачу
Не заботится о создании и уничтожении потоков
Основные преимущества:
Контроль количества потоков
Потоки переиспользуются
Нет бесконтрольного роста
Управление жизненным циклом
Можно корректно завершить выполнение
Есть shutdown() и shutdownNow()
Гибкость работы с задачами
Runnable и Callable
Поддержка Future
ExecutorService executor = Executors.newFixedThreadPool(4);
executor.submit(() -> doWork());
executor.shutdown();
Задача выполнится одним из потоков пула.
В отличие от Thread:
Задачи отделены от потоков
Потоки переиспользуются
Код проще тестировать и поддерживать
ExecutorService — стандартный и безопасный способ работы с потоками.
Он снимает с разработчика ответственность за управление потоками.