Multithreading-Taak
Taak
Schrijf logica om 100 threads te creëren, waarbij elke thread de faculteit van de index in een lus berekent en het resultaat opslaat in de array results.
Je moet ook wachten tot alle threads klaar zijn voordat je de resultaten weergeeft. (join()-methode)
Wijzig niets behalve de methode calculateFactorialsInParallel()
De methoden factorial(), printMassive(), getResults() zijn kant-en-klaar en hoeven niet aangepast te worden
factorial(Integer) - berekent de faculteit van het opgegeven getal;
printMassive(BigInteger[]) - drukt de resultatenarray af naar de console;
getResults() - geeft de resultatenarray terug (gebruikt voor tests);
SIZE_MASSIVE - constante voor het definiëren van de arraygrootte (NIET WIJZIGEN);
results[] - array voor het opslaan van resultaten.
Zodra je de taak hebt voltooid, ga naar src/test/java/TaskThreadTest.java en voer deze uit
Je zou slechts één test moeten hebben om de eerste keer te laten slagen
Wanneer je de taak correct uitvoert, zouden alle tests moeten slagen. Als een test niet slaagt, heb je calculateFactorialsInParallel() onjuist geïmplementeerd of heb je velden/methoden gewijzigd die niet gewijzigd mogen worden.
Implementatieplan
-
Maak een array van threads aan: Stel een array van
Threadobjecten samen, waarbij elk element overeenkomt met een aparte thread. De grootte van de array moet overeenkomen met de array die je verwerkt (SIZE_MASSIVE = 100). -
Initialiseer elke thread: Maak in een lus die door elk element van de array iterereert een nieuwe thread aan. Voer binnen deze thread de vereiste taak uit (bereken de faculteit van de index). Sla het resultaat op in de resultatenarray.
-
Start de threads: Zodra elke thread is aangemaakt, start deze door de
start()-methode aan te roepen. -
Wacht tot alle threads klaar zijn: Gebruik na het starten van alle threads de
join()-methode op elke thread om ervoor te zorgen dat de hoofdthread van het programma wacht tot alle threads klaar zijn. Dit garandeert dat alle berekeningen voltooid zijn voordat de hoofdthread van het programma verdergaat.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Can you show me how to implement the calculateFactorialsInParallel() method?
What should I do if some tests do not pass after running them?
Can you explain how to use the join() method with threads in this context?
Awesome!
Completion rate improved to 3.33
Multithreading-Taak
Veeg om het menu te tonen
Taak
Schrijf logica om 100 threads te creëren, waarbij elke thread de faculteit van de index in een lus berekent en het resultaat opslaat in de array results.
Je moet ook wachten tot alle threads klaar zijn voordat je de resultaten weergeeft. (join()-methode)
Wijzig niets behalve de methode calculateFactorialsInParallel()
De methoden factorial(), printMassive(), getResults() zijn kant-en-klaar en hoeven niet aangepast te worden
factorial(Integer) - berekent de faculteit van het opgegeven getal;
printMassive(BigInteger[]) - drukt de resultatenarray af naar de console;
getResults() - geeft de resultatenarray terug (gebruikt voor tests);
SIZE_MASSIVE - constante voor het definiëren van de arraygrootte (NIET WIJZIGEN);
results[] - array voor het opslaan van resultaten.
Zodra je de taak hebt voltooid, ga naar src/test/java/TaskThreadTest.java en voer deze uit
Je zou slechts één test moeten hebben om de eerste keer te laten slagen
Wanneer je de taak correct uitvoert, zouden alle tests moeten slagen. Als een test niet slaagt, heb je calculateFactorialsInParallel() onjuist geïmplementeerd of heb je velden/methoden gewijzigd die niet gewijzigd mogen worden.
Implementatieplan
-
Maak een array van threads aan: Stel een array van
Threadobjecten samen, waarbij elk element overeenkomt met een aparte thread. De grootte van de array moet overeenkomen met de array die je verwerkt (SIZE_MASSIVE = 100). -
Initialiseer elke thread: Maak in een lus die door elk element van de array iterereert een nieuwe thread aan. Voer binnen deze thread de vereiste taak uit (bereken de faculteit van de index). Sla het resultaat op in de resultatenarray.
-
Start de threads: Zodra elke thread is aangemaakt, start deze door de
start()-methode aan te roepen. -
Wacht tot alle threads klaar zijn: Gebruik na het starten van alle threads de
join()-methode op elke thread om ervoor te zorgen dat de hoofdthread van het programma wacht tot alle threads klaar zijn. Dit garandeert dat alle berekeningen voltooid zijn voordat de hoofdthread van het programma verdergaat.
Bedankt voor je feedback!