我有一个可能的输入值列表
val inputValues = List(1,2,3,4,5)
我有一个很长的计算函数,它给了我一个结果
def reallyLongFunction( input: Int ) : Option[String] = { ..... }
使用 scala 并行集合,我可以轻松做到
inputValues.par.map( reallyLongFunction( _ ) )
并行获取所有结果。问题是,我真的不想要所有的结果,我只想要第一个结果。一旦我的一个输入成功,我想要我的输出,并且想要继续我的生活。这做了很多额外的工作。
那么如何才能两全其美呢?我想要
- 获取从我的长函数返回的第一个结果
- 停止我所有其他线程的无用工作。
编辑- 我像一个愚蠢的Java程序员一样解决了它
@volatile var done = false;
这是在我的reallyLongFunction
. 这有效,但感觉不是很scala。想要一个更好的方法来做到这一点......