我需要运行两个并行计算,并在第二个计算完成时中断第一个计算。目前,我已经使用标准 Java 线程实现了它:
/**
* Runs <var>sup</var> in parallel with <var>main</var>.
* Terminate (interrupt) it when <var>main</var> finishes.
*/
def support[R](sup: => Unit, main: => R): R = {
val supThread = new Thread {
override def run = { sup };
}
supThread.start();
try {
main;
} finally {
supThread.interrupt();
}
}
可以使用 Scala 的并发库实现相同的行为,而不显式使用 Thread
吗?
最佳答案
不适用于 Scala 标准 future(AFAIK),但是 Twitter's Util library确实支持:
val future = Future { sup }
future.cancel() // in 5.x
future.raise(new FutureCancelledException) // in 6.x
关于scala - Scala 中如何中断异步计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15321018/