Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Uppgift om Multitrådning | Grunderna i Multitrådning
Multitrådning i Java

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

Note
Notera

Ä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

  1. Skapa en array av trådar: Skapa en array av Thread objekt, där varje element motsvarar en unik tråd. Arrayens storlek ska matcha arrayen som bearbetas (SIZE_MASSIVE = 100).

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

  3. Starta trådarna: När varje tråd har skapats, starta den genom att anropa metoden start().

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

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 7

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Suggested prompts:

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

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

Note
Notera

Ä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

  1. Skapa en array av trådar: Skapa en array av Thread objekt, där varje element motsvarar en unik tråd. Arrayens storlek ska matcha arrayen som bearbetas (SIZE_MASSIVE = 100).

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

  3. Starta trådarna: När varje tråd har skapats, starta den genom att anropa metoden start().

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

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 7
some-alt