2015-11-06 99 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中都有很好的解釋,值得一讀。