В Scala вы можете использовать глобальный ExecutionContext
, если вам не нужно определять свой собственный, импортируя scala.concurrent.ExecutionContext.Implicits.global
.
Мой вопрос, почему ForkJoinPool
был выбран для этого исполнителя вместо ThreadPoolExecutor
.
Я понимаю, что структура fork-join превосходна при рекурсивном разложении проблем. Вы должны написать код, который разбивает задачу на половинки, так что половина может быть выполнена в потоке, а другая половина может быть выполнена другим потоком. Это кажется очень конкретной моделью программирования, а не той, которая обычно применима для обработки общих асинхронных задач в широком диапазоне возможных приложений.
Итак, почему был выбран ForkJoinPool
для контекста исполнения по умолчанию, который, скорее всего, будет использовать большинство людей? Ухудшается ли дизайн вождения за счет повышения производительности, даже если вы не используете полную парадигму fork-join?