有什么方法可以中断 Scala 中的并行集合计算?
例子:
val r = new Runnable {
override def run(): Unit = {
(1 to 3).par.foreach { _ => Thread.sleep(5000000) }
}
}
val t = new Thread(r)
t.start()
Thread.sleep(300) // let them spin up
t.interrupt()
我希望t.interrupt
中断由 产生的所有线程par
,但这没有发生,它一直在内部旋转ForkJoinTask.externalAwaitDone
。看起来该方法清除了中断状态并继续等待生成的线程完成。
这是 Scala 2.12