这里是代码:在Scala的“未来”的ForkJoinPool中,为什么工人的ID总是奇数?
import scala.concurrent._
import ExecutionContext.Implicits.global
import scala.concurrent.duration._
val is = 1 to 100 toList
def db = s"${Thread.currentThread}"
def f(i: Int) = Future { println(db) ; 2 * i }
val theFuture = Future.traverse(is)(f _)
Await.result(theFuture, 10.seconds)
我拼命地跑了很多次,结果是这样的:
Thread[ForkJoinPool-1-worker-3,5,main]
Thread[ForkJoinPool-1-worker-3,5,main]
Thread[ForkJoinPool-1-worker-3,5,main]
Thread[ForkJoinPool-1-worker-3,5,main]
Thread[ForkJoinPool-1-worker-3,5,main]
Thread[ForkJoinPool-1-worker-1,5,main]
Thread[ForkJoinPool-1-worker-5,5,main]
Thread[ForkJoinPool-1-worker-7,5,main]
Thread[ForkJoinPool-1-worker-7,5,main]
Thread[ForkJoinPool-1-worker-7,5,main]
Thread[ForkJoinPool-1-worker-7,5,main]
Thread[ForkJoinPool-1-worker-7,5,main]
Thread[ForkJoinPool-1-worker-7,5,main]
Thread[ForkJoinPool-1-worker-7,5,main]
Thread[ForkJoinPool-1-worker-7,5,main]
Thread[ForkJoinPool-1-worker-3,5,main]
模式始终是 “主题[ForkJoinPool-1-工人 - ” $ { AnOddNumber} “5,主]”。有没有人有关于为什么工人的ID总是奇数而不是偶数的想法?