Kursinhalt
Multithreading in Java
Multithreading in Java
Multithreading-Aufgabe
Aufgabe
Sie müssen eine Logik schreiben, um 100 Threads zu erstellen, von denen jeder die Fakultät des Indexes in einer Schleife berechnet und das Ergebnis im results
-Array speichert.
Sie müssen auch warten, bis alle Threads abgeschlossen sind, bevor Sie die Ergebnisse ausgeben. (join()
Methode)
Die Methoden factorial()
, printMassive()
, getResults()
sind fertig und Sie müssen sie in keiner Weise ändern
factorial(Integer)
- berechnet die Fakultät der übergebenen Zahl;
printMassive(BigInteger[])
- gibt das Ergebnisse-Array auf der Konsole aus;
getResults()
- gibt das Ergebnisse-Array zurück (wird für Tests verwendet);
SIZE_MASSIVE
- Konstante zur Definition des Array-Werts (NICHT ÄNDERN);
results[]
- Array zur Aufzeichnung der Ergebnisse.
Sobald Sie die Aufgabe erledigt haben, gehen Sie zu src/test/java/TaskThreadTest.java
und führen Sie sie aus
Sie sollten nur einen Test haben, um ihn beim ersten Mal zu bestehen
Wenn Sie die Aufgabe korrekt ausführen, sollten alle Tests bestehen. Wenn ein Test nicht besteht, haben Sie calculateFactorialsInParallel()
falsch implementiert oder jene Felder/Methoden geändert, die nicht geändert werden dürfen.
Implementierungsplan
-
Erstellen Sie ein Array von Threads: Richten Sie ein Array von
Thread
-Objekten ein, wobei jedes Element einem anderen Thread entspricht. Die Größe des Arrays sollte mit dem Array übereinstimmen, das Sie verarbeiten (SIZE_MASSIVE = 100
). -
Initialisieren Sie jeden Thread: In einer Schleife, die durch jedes Element des Arrays iteriert, erstellen Sie einen neuen Thread. Innerhalb dieses Threads führen Sie die erforderliche Aufgabe aus (berechnen Sie die Fakultät des Indexes). Speichern Sie das Ergebnis im Ergebnisarray.
-
Starten Sie die Threads: Sobald jeder Thread erstellt ist, starten Sie ihn, indem Sie die
start()
-Methode aufrufen. -
Warten Sie, bis alle Threads abgeschlossen sind: Nachdem alle Threads gestartet wurden, verwenden Sie die
join()
-Methode für jeden Thread, um sicherzustellen, dass der Hauptprogramm-Thread wartet, bis alle Threads beendet sind. Dies garantiert, dass alle Berechnungen abgeschlossen sind, bevor der Hauptprogramm-Thread fortfährt.
Danke für Ihr Feedback!