Я предполагаю, что любые вызовы .par, например someVector.par.map. (). Seq и т. Д. Из anotherMethod или любых его последующих вызовов, будут использовать глобальный контекст выполнения, а не пользовательский.один создан в методе а.Верно ли мое предположение?
Давайте разделим этот ответ на две части.Во-первых, если у вас есть какие-то другие методы в вашей цепочке вызовов, которые потребуют неявного ExecutionContext
, они получат тот, который неявно определен в вашем вызове methodA
верхнего уровня.
В противном случае дизайн параллельной коллекции вScala не имеет понятия ExecutionContext
, это строго свойство Future
.В библиотеке параллельных коллекций есть понятие TaskSupport
, которое отвечает за планирование внутри параллельной коллекции:
* Parallel collections are modular in the way operations are scheduled. Each
* parallel collection is parameterized with a task support object which is
* responsible for scheduling and load-balancing tasks to processors.
Таким образом, эти параллельные коллекции не будут иметь ничего общего с ExecutionContext
, объявленным в Foo
.Однако вы можете явно установить их с помощью установщика tasksupport
:
val par = List(1,2,3,4).par
par.tasksupport = new ForkJoinTaskSupport(new ForkJoinPool(4))