ExecutorService отделяет задачу от управления её выполнением: предоставляет submit, Future, координацию завершения и контролируемый жизненный цикл исполнителя вместо ручного создания каждого потока.
Почему ExecutorService популярен? Какой у него бонус перед созданием потоков напрямую?
ExecutorService отделяет задачу от управления её выполнением: предоставляет submit, Future, координацию завершения и контролируемый жизненный цикл исполнителя вместо ручного создания каждого потока.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
ExecutorService отделяет задачу от управления её выполнением: предоставляет submit, Future, координацию завершения и контролируемый жизненный цикл исполнителя вместо ручного создания каждого потока.
Для пула платформенных потоков это позволяет ограничить параллелизм, повторно использовать workers и задать очередь с политикой отказа. Размеры очереди и пула всё равно нужно выбирать под нагрузку: исполнитель сам не защищает от бесконечного накопления задач. Ошибки submit следует забирать из Future либо обрабатывать явно. Для виртуальных потоков модель может быть «поток на задачу», но управление жизненным циклом и ограничение внешних ресурсов остаются необходимыми.