0
多线程与未来,我知道的多线程未来一点点,如:我想知道关于斯卡拉
for(i <- 1 to 5) yield future {
println(i)
}
但这是所有线程做同样的工作。
所以,我想知道如何使两个线程同时做不同的工作。
另外,我想知道是否有任何方法知道所有的线程是完整的?
请给我简单的东西。
多线程与未来,我知道的多线程未来一点点,如:我想知道关于斯卡拉
for(i <- 1 to 5) yield future {
println(i)
}
但这是所有线程做同样的工作。
所以,我想知道如何使两个线程同时做不同的工作。
另外,我想知道是否有任何方法知道所有的线程是完整的?
请给我简单的东西。
首先,机会是你可能会很乐意与parallel collections,特别是如果你需要的是在并行使用多线程紧缩一些数据:
val lines = Seq("foo", "bar", "baz")
lines.par.map(line => line.length)
虽然适用于有限的数据集并行的集合,指数期货更多的是面向事件的处理,事实上,未来定义任务,从执行细节中抽象出来(一个线程,多个线程,特定任务如何固定到线程) - 所有这些都由execution context控制。你可以用期货做的事情是增加回调(在成功时,在失败时,在两者上),用另一个未来构成它或等待结果。所有这些概念在official doc中都有很好的解释,值得一读。