Multithreading-Aufgabe
Aufgabe
Es soll eine Logik implementiert werden, um 100 Threads zu erstellen, von denen jeder die Fakultät des Indexes in einer Schleife berechnet und das Ergebnis im Array results speichert.
Außerdem muss auf den Abschluss aller Threads gewartet werden, bevor die Ergebnisse ausgegeben werden. (join()-Methode)
Nehmen Sie keine Änderungen außerhalb der Methode calculateFactorialsInParallel() vor.
Die Methoden factorial(), printMassive() und getResults() sind vorgefertigt und dürfen nicht verändert werden.
factorial(Integer) – berechnet die Fakultät der übergebenen Zahl;
printMassive(BigInteger[]) – gibt das Ergebnisarray auf der Konsole aus;
getResults() – gibt das Ergebnisarray zurück (wird für Tests verwendet);
SIZE_MASSIVE – Konstante zur Definition der Arraygröße (NICHT ÄNDERN);
results[] – Array zur Speicherung der Ergebnisse.
Nachdem Sie die Aufgabe erledigt haben, gehen Sie zu src/test/java/TaskThreadTest.java und führen Sie diese aus.
Beim ersten Ausführen sollte nur ein Test vorhanden sein, den Sie bestehen müssen.
Wenn Sie die Aufgabe korrekt lösen, sollten alle Tests erfolgreich sein. Falls ein Test fehlschlägt, haben Sie entweder calculateFactorialsInParallel() falsch implementiert oder Felder/Methoden verändert, die nicht geändert werden dürfen.
Implementierungsplan
-
Ein Array von Threads erstellen: Ein Array von
Thread-Objekten einrichten, wobei jedes Element einem anderen Thread entspricht. Die Größe des Arrays sollte mit dem zu verarbeitenden Array übereinstimmen (SIZE_MASSIVE = 100). -
Jeden Thread initialisieren: In einer Schleife, die jedes Element des Arrays durchläuft, einen neuen Thread erzeugen. Innerhalb dieses Threads die erforderliche Aufgabe ausführen (Berechnung der Fakultät des Index). Das Ergebnis im Ergebnis-Array speichern.
-
Threads starten: Nachdem jeder Thread erstellt wurde, diesen durch Aufruf der
start()-Methode initiieren. -
Auf Abschluss aller Threads warten: Nach dem Starten aller Threads die
join()-Methode für jeden Thread verwenden, 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!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 3.33
Multithreading-Aufgabe
Swipe um das Menü anzuzeigen
Aufgabe
Es soll eine Logik implementiert werden, um 100 Threads zu erstellen, von denen jeder die Fakultät des Indexes in einer Schleife berechnet und das Ergebnis im Array results speichert.
Außerdem muss auf den Abschluss aller Threads gewartet werden, bevor die Ergebnisse ausgegeben werden. (join()-Methode)
Nehmen Sie keine Änderungen außerhalb der Methode calculateFactorialsInParallel() vor.
Die Methoden factorial(), printMassive() und getResults() sind vorgefertigt und dürfen nicht verändert werden.
factorial(Integer) – berechnet die Fakultät der übergebenen Zahl;
printMassive(BigInteger[]) – gibt das Ergebnisarray auf der Konsole aus;
getResults() – gibt das Ergebnisarray zurück (wird für Tests verwendet);
SIZE_MASSIVE – Konstante zur Definition der Arraygröße (NICHT ÄNDERN);
results[] – Array zur Speicherung der Ergebnisse.
Nachdem Sie die Aufgabe erledigt haben, gehen Sie zu src/test/java/TaskThreadTest.java und führen Sie diese aus.
Beim ersten Ausführen sollte nur ein Test vorhanden sein, den Sie bestehen müssen.
Wenn Sie die Aufgabe korrekt lösen, sollten alle Tests erfolgreich sein. Falls ein Test fehlschlägt, haben Sie entweder calculateFactorialsInParallel() falsch implementiert oder Felder/Methoden verändert, die nicht geändert werden dürfen.
Implementierungsplan
-
Ein Array von Threads erstellen: Ein Array von
Thread-Objekten einrichten, wobei jedes Element einem anderen Thread entspricht. Die Größe des Arrays sollte mit dem zu verarbeitenden Array übereinstimmen (SIZE_MASSIVE = 100). -
Jeden Thread initialisieren: In einer Schleife, die jedes Element des Arrays durchläuft, einen neuen Thread erzeugen. Innerhalb dieses Threads die erforderliche Aufgabe ausführen (Berechnung der Fakultät des Index). Das Ergebnis im Ergebnis-Array speichern.
-
Threads starten: Nachdem jeder Thread erstellt wurde, diesen durch Aufruf der
start()-Methode initiieren. -
Auf Abschluss aller Threads warten: Nach dem Starten aller Threads die
join()-Methode für jeden Thread verwenden, 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!