如何在Scala中中断异步计算?
发布时间:2020-12-16 18:38:14 所属栏目:安全 来源:网络整理
导读:我需要运行两个并行计算,并在第二个完成时中断第一个计算.目前,我已使用标准 Java线程实现它: /** * Runs varsup/var in parallel with varmain/var. * Terminate (interrupt) it when varmain/var finishes. */def support[R](sup: = Unit,main: = R): R =
我需要运行两个并行计算,并在第二个完成时中断第一个计算.目前,我已使用标准
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的并发库可以实现相同的行为,而无需显式使用Threads吗? 解决方法
不是Scala标准期货(AFAIK),但
Twitter’s Util library确实支持它:
val future = Future { sup } future.cancel() // in 5.x future.raise(new FutureCancelledException) // in 6.x (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |