Ich bin neu in Scala und ich versuche, einen Griff auf Futures zu erhalten und MultithreadingScala Futures und Multithreading
ich eine SingleThreaded Version eines Programms haben, das einige Berechnungen auf einer Matrix macht
SingleThreadCalc {
def run(matrix : Seq[Seq[Double]]) : Future[Seq[Seq[Double]] = Future{doMath(matrix)}
}
Was ich jetzt möchte, ist eine Multithread-Version davon zu machen. ist es genug, um nur einen ExecutionContext mit einer Anzahl von Threads zu übergeben?
MultiThreadCalc {
def run(matrix : Seq[Seq[Double]]) : Future[Seq[Seq[Double]] =
Future{doMath(matrix)} (ExecutionContext.fromExecutor(Executors.newFixedThreadPool(10)))
Wird sich die Berechnungslast zwischen allen Threads teilen oder geschieht dies überhaupt nicht?
Die kurze Antwort, die ich geben würde, ist "anscheinend so", aber ich denke, die beste Antwort würde vom Laufen des Dinges und dem Messen kommen. – stefanobaghino
Ich denke, der erste Schritt für Sie, wenn Sie Ihre doMath in Aufgaben zusammenführen, die parallel ausgeführt werden können. – jamborta
@jamborta jetzt ist es ein Doppel für iterieren über die Elemente der Matrix Ich dachte über Refactoring zu Zeile Verarbeitung aber kann ich kontrollieren, welcher Thread endet die Verarbeitung jeder Zeile? – tiefizzy