【发布时间】:2017-11-18 04:52:11
【问题描述】:
我是 Scala 新手,我正在尝试处理期货和多线程
我有一个单线程版本的程序,可以对矩阵进行一些计算
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)))
这会在所有线程之间分担计算负载还是根本不发生?
【问题讨论】:
-
我给出的简短答案是“显然是这样”,但我认为最好的答案来自运行和测量。
-
我认为第一步是将你的 doMath 分解为可以并行执行的任务。
-
@jamborta 现在它是一个双倍的迭代矩阵的元素我正在考虑重构为行处理但我可以控制哪个线程最终处理每一行吗?
标签: multithreading scala future