我是新來斯卡拉,我試圖讓期貨的手柄和多線程斯卡拉期貨和多線程
我有一個程序的版本的SingleThreaded,使得在矩陣的一些計算
SingleThreadCalc {
def run(matrix : Seq[Seq[Double]]) : Future[Seq[Seq[Double]] = Future{doMath(matrix)}
}
我現在想要的是製作一個多線程版本。 是否足夠讓一個ExecutionContext傳遞一些線程?
MultiThreadCalc {
def run(matrix : Seq[Seq[Double]]) : Future[Seq[Seq[Double]] =
Future{doMath(matrix)} (ExecutionContext.fromExecutor(Executors.newFixedThreadPool(10)))
這將共享所有線程之間的計算負載還是根本沒有發生?
我會給出的簡短答案是「顯然是如此」,但我認爲最好的答案將來自運行該事物並測量。 – stefanobaghino
我認爲如果要將doMath分解爲可以並行執行的任務,那麼請考慮第一步。 – jamborta
@jamborta現在它是迭代矩陣的元素的兩倍 我正在考慮重構到行處理 但我可以控制哪個線程結束處理每一行? – tiefizzy