2015-11-06 59 views
0

多线程与未来,我知道的多线程未来一点点,如:我想知道关于斯卡拉

for(i <- 1 to 5) yield future { 
    println(i) 
} 

但这是所有线程做同样的工作。

所以,我想知道如何使两个线程同时做不同的工作。

另外,我想知道是否有任何方法知道所有的线程是完整的?

请给我简单的东西。

回答

0

首先,机会是你可能会很乐意与parallel collections,特别是如果你需要的是在并行使用多线程紧缩一些数据:

val lines = Seq("foo", "bar", "baz") 
lines.par.map(line => line.length) 

虽然适用于有限的数据集并行的集合,指数期货更多的是面向事件的处理,事实上,未来定义任务,从执行细节中抽象出来(一个线程,多个线程,特定任务如何固定到线程) - 所有这些都由execution context控制。你可以用期货做的事情是增加回调(在成功时,在失败时,在两者上),用另一个未来构成它或等待结果。所有这些概念在official doc中都有很好的解释,值得一读。