Uppgift om Multitrådning
Uppgift
Du ska skriva logik för att skapa 100 trådar, där var och en beräknar fakulteten av sitt index i en loop och sparar resultatet i arrayen results.
Du behöver också vänta på att alla trådar ska avslutas innan resultaten skrivs ut. (join()-metoden)
Ändra ingenting förutom metoden calculateFactorialsInParallel()
Metoderna factorial(), printMassive(), getResults() är färdiga och du behöver inte ändra dem på något sätt
factorial(Integer) – beräknar fakulteten av det angivna talet;
printMassive(BigInteger[]) – skriver ut resultatarrayen till konsolen;
getResults() – returnerar resultatarrayen (används för tester);
SIZE_MASSIVE – konstant för att definiera arrayens storlek (FÅR INTE ÄNDRAS);
results[] – array för att spara resultaten.
När du har slutfört uppgiften, gå till src/test/java/TaskThreadTest.java och kör den
Du bör endast ha ett test att klara första gången du kör den
När du har utfört uppgiften korrekt ska alla tester klara sig. Om något test inte klarar sig har du implementerat calculateFactorialsInParallel() felaktigt eller ändrat sådana fält/metoder som inte får ändras
Implementeringsplan
-
Skapa en array av trådar: Skapa en array av
Threadobjekt, där varje element motsvarar en unik tråd. Arrayens storlek ska matcha arrayen som bearbetas (SIZE_MASSIVE = 100). -
Initiera varje tråd: I en loop som itererar genom varje element i arrayen, skapa en ny tråd. Inuti denna tråd utförs den nödvändiga uppgiften (beräkna fakulteten av indexet). Spara resultatet i resultatarrayen.
-
Starta trådarna: När varje tråd har skapats, starta den genom att anropa metoden
start(). -
Vänta på att alla trådar ska slutföras: Efter att alla trådar har startats, använd metoden
join()på varje tråd för att säkerställa att huvudprogramtråden väntar på att alla trådar ska bli klara. Detta garanterar att alla beräkningar är färdiga innan huvudprogramtråden fortsätter.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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
Uppgift om Multitrådning
Svep för att visa menyn
Uppgift
Du ska skriva logik för att skapa 100 trådar, där var och en beräknar fakulteten av sitt index i en loop och sparar resultatet i arrayen results.
Du behöver också vänta på att alla trådar ska avslutas innan resultaten skrivs ut. (join()-metoden)
Ändra ingenting förutom metoden calculateFactorialsInParallel()
Metoderna factorial(), printMassive(), getResults() är färdiga och du behöver inte ändra dem på något sätt
factorial(Integer) – beräknar fakulteten av det angivna talet;
printMassive(BigInteger[]) – skriver ut resultatarrayen till konsolen;
getResults() – returnerar resultatarrayen (används för tester);
SIZE_MASSIVE – konstant för att definiera arrayens storlek (FÅR INTE ÄNDRAS);
results[] – array för att spara resultaten.
När du har slutfört uppgiften, gå till src/test/java/TaskThreadTest.java och kör den
Du bör endast ha ett test att klara första gången du kör den
När du har utfört uppgiften korrekt ska alla tester klara sig. Om något test inte klarar sig har du implementerat calculateFactorialsInParallel() felaktigt eller ändrat sådana fält/metoder som inte får ändras
Implementeringsplan
-
Skapa en array av trådar: Skapa en array av
Threadobjekt, där varje element motsvarar en unik tråd. Arrayens storlek ska matcha arrayen som bearbetas (SIZE_MASSIVE = 100). -
Initiera varje tråd: I en loop som itererar genom varje element i arrayen, skapa en ny tråd. Inuti denna tråd utförs den nödvändiga uppgiften (beräkna fakulteten av indexet). Spara resultatet i resultatarrayen.
-
Starta trådarna: När varje tråd har skapats, starta den genom att anropa metoden
start(). -
Vänta på att alla trådar ska slutföras: Efter att alla trådar har startats, använd metoden
join()på varje tråd för att säkerställa att huvudprogramtråden väntar på att alla trådar ska bli klara. Detta garanterar att alla beräkningar är färdiga innan huvudprogramtråden fortsätter.
Tack för dina kommentarer!