Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Multithreading-Aufgabe | Grundlagen der Nebenläufigkeit
Multithreading in Java

bookMultithreading-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)

Note
Hinweis

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

  1. 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).

  2. 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.

  3. Threads starten: Nachdem jeder Thread erstellt wurde, diesen durch Aufruf der start()-Methode initiieren.

  4. 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.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 7

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 3.33

bookMultithreading-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)

Note
Hinweis

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

  1. 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).

  2. 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.

  3. Threads starten: Nachdem jeder Thread erstellt wurde, diesen durch Aufruf der start()-Methode initiieren.

  4. 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.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 7
some-alt