Мне трудно понять, как убедиться, что я выполняю свои разветвленные задачи в своем собственном ForkjoinPool
, вместо того, чтобы использовать общий пул, что, как я полагаю, происходит, когда вы не указываете в каком пуле потоков вы хотите запустить.
Глядя на код ниже, кажется, что нет никакой связи между моим экземпляром fjp
и недавно созданными объектами FibonacciCalculator
. Это заставляет меня предположить, что мой fjp
фактически не используется для подзадач. Как это сделать?
object FJPoolApp extends App {
val fjp = new ForkJoinPool()
println(fjp.submit(new FibonacciCalculator(10)).get)
}
class FibonacciCalculator(k : Int) extends RecursiveTask[Int] {
override def compute(): Int = {
if (k <= 1) k
else {
val left = new FibonacciCalculator(k-1).fork() <-- where is this being run?
val right = new FibonacciCalculator(k-2).fork() <-- where is this being run?
left.join() + right.join()
}
}
}