ExecutorService
абстрагирует многие сложности, связанные с абстракциями более низкого уровня, такими как raw Thread
. Он предоставляет механизмы для безопасного запуска, закрытия, отправки, выполнения и блокировки при успешном или внезапном завершении задач (выражается как Runnable
или Callable
).
С JCiP , раздел 6.2, прямо изо рта лошади:
Executor
может быть простым интерфейсом, но он служит основой для гибкой и мощной структуры для асинхронного выполнения задач, которая поддерживает широкий спектр политик выполнения задач. Он обеспечивает стандартные средства отделения отправки задачи от выполнения задачи , описывая задачи как Runnable
. Реализации Executor
также предоставляют поддержку жизненного цикла и ловушки для добавления сбора статистики, управления приложениями и мониторинга.
...
Использование Executor
, как правило, является самым простым способом реализации дизайна «производитель-потребитель» в вашем приложении.
Вместо того, чтобы тратить свое время на реализацию (часто неправильно и с большими усилиями) базовой инфраструктуры для параллелизма, инфраструктура j.u.concurrent
позволяет вместо этого сосредоточиться на структурировании задач, зависимостей и потенциального параллелизма. Для большого количества параллельных приложений легко определить и использовать границы задач и использовать j.u.c
, что позволяет вам сосредоточиться на гораздо меньшем подмножестве реальных задач параллелизма, которые могут потребовать более специализированных решений.
Кроме того, несмотря на шаблонный внешний вид, страница Oracle API , обобщающая утилиты параллелизма , содержит несколько действительно веских аргументов в пользу их использования, не в последнюю очередь:
Разработчики, скорее всего, уже
понять стандартную библиотеку
классы, поэтому нет необходимости учиться
API и поведение ad-hoc
параллельные компоненты. Дополнительно,
параллельные приложения далеко
проще отлаживать, когда они построены
на надежных, хорошо протестированных компонентах.
Этот вопрос о SO спрашивает о хорошей книге, на которую немедленным ответом является JCiP. Если вы еще этого не сделали, получите себе копию. Представленный здесь комплексный подход к параллелизму выходит далеко за рамки этого вопроса и в долгосрочной перспективе избавит вас от душевных страданий.