Monisäikeistystehtävä
Tehtävä
Sinun tulee kirjoittaa logiikka, joka luo 100 säiettä, joista kukin laskee indeksinsä kertoman silmukassa ja tallentaa tuloksen results-taulukkoon.
Sinun tulee myös odottaa, että kaikki säikeet valmistuvat ennen tulosten tulostamista. (join()-metodi)
Älä muuta mitään muuta kuin metodia calculateFactorialsInParallel()
Metodit factorial(), printMassive(), getResults() ovat valmiita, eikä niitä tarvitse muokata
factorial(Integer) – laskee annetun luvun kertoman;
printMassive(BigInteger[]) – tulostaa tulostaulukon konsoliin;
getResults() – palauttaa tulostaulukon (käytetään testeissä);
SIZE_MASSIVE – vakio taulukon koon määrittämiseen (ÄLÄ MUUTA);
results[] – taulukko tulosten tallentamiseen.
Kun olet suorittanut tehtävän, siirry tiedostoon src/test/java/TaskThreadTest.java ja suorita se
Ensimmäisellä suorituskerralla sinun tulisi läpäistä vain yksi testi
Kun tehtävä on toteutettu oikein, kaikkien testien tulisi mennä läpi. Jos jokin testi ei mene läpi, olet toteuttanut calculateFactorialsInParallel()-metodin virheellisesti tai muuttanut sellaisia kenttiä/metodeja, joita ei saa muuttaa.
Toteutussuunnitelma
-
Luo taulukko säikeitä varten: Määritä taulukko
Thread-olioita, jossa jokainen alkio vastaa eri säiettä. Taulukon koko tulee olla sama kuin käsiteltävän taulukon koko (SIZE_MASSIVE = 100). -
Alusta jokainen säie: Käytä silmukkaa, joka käy läpi jokaisen taulukon alkion ja luo uuden säikeen. Tässä säikeessä suoritetaan vaadittu tehtävä (indeksin kertoman laskeminen). Tallenna tulos tulostaulukkoon.
-
Käynnistä säikeet: Kun jokainen säie on luotu, käynnistä se kutsumalla
start()-metodia. -
Odota kaikkien säikeiden valmistumista: Kun kaikki säikeet on käynnistetty, käytä
join()-metodia jokaiselle säikeelle varmistaaksesi, että pääohjelman säie odottaa, kunnes kaikki säikeet ovat valmiit. Tämä takaa, että kaikki laskutoimitukset ovat valmiit ennen kuin pääohjelman säie jatkaa.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 3.33
Monisäikeistystehtävä
Pyyhkäise näyttääksesi valikon
Tehtävä
Sinun tulee kirjoittaa logiikka, joka luo 100 säiettä, joista kukin laskee indeksinsä kertoman silmukassa ja tallentaa tuloksen results-taulukkoon.
Sinun tulee myös odottaa, että kaikki säikeet valmistuvat ennen tulosten tulostamista. (join()-metodi)
Älä muuta mitään muuta kuin metodia calculateFactorialsInParallel()
Metodit factorial(), printMassive(), getResults() ovat valmiita, eikä niitä tarvitse muokata
factorial(Integer) – laskee annetun luvun kertoman;
printMassive(BigInteger[]) – tulostaa tulostaulukon konsoliin;
getResults() – palauttaa tulostaulukon (käytetään testeissä);
SIZE_MASSIVE – vakio taulukon koon määrittämiseen (ÄLÄ MUUTA);
results[] – taulukko tulosten tallentamiseen.
Kun olet suorittanut tehtävän, siirry tiedostoon src/test/java/TaskThreadTest.java ja suorita se
Ensimmäisellä suorituskerralla sinun tulisi läpäistä vain yksi testi
Kun tehtävä on toteutettu oikein, kaikkien testien tulisi mennä läpi. Jos jokin testi ei mene läpi, olet toteuttanut calculateFactorialsInParallel()-metodin virheellisesti tai muuttanut sellaisia kenttiä/metodeja, joita ei saa muuttaa.
Toteutussuunnitelma
-
Luo taulukko säikeitä varten: Määritä taulukko
Thread-olioita, jossa jokainen alkio vastaa eri säiettä. Taulukon koko tulee olla sama kuin käsiteltävän taulukon koko (SIZE_MASSIVE = 100). -
Alusta jokainen säie: Käytä silmukkaa, joka käy läpi jokaisen taulukon alkion ja luo uuden säikeen. Tässä säikeessä suoritetaan vaadittu tehtävä (indeksin kertoman laskeminen). Tallenna tulos tulostaulukkoon.
-
Käynnistä säikeet: Kun jokainen säie on luotu, käynnistä se kutsumalla
start()-metodia. -
Odota kaikkien säikeiden valmistumista: Kun kaikki säikeet on käynnistetty, käytä
join()-metodia jokaiselle säikeelle varmistaaksesi, että pääohjelman säie odottaa, kunnes kaikki säikeet ovat valmiit. Tämä takaa, että kaikki laskutoimitukset ovat valmiit ennen kuin pääohjelman säie jatkaa.
Kiitos palautteestasi!