Is there any way to interrupt a parallel collection computation in Scala?
Example:
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()
I'd expect t.interrupt
to interrupt all threads spawned by par
, but this is not happening, it keeps spinning inside ForkJoinTask.externalAwaitDone
. Looks like that method clears the interrupted status and keeps waiting for the spawned threads to finish.
This is Scala 2.12