Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Monisäikeistystehtävä | Monisäikeisyyden Perusteet
Quizzes & Challenges
Quizzes
Challenges
/
Monisäikeisyys Javassa

bookMonisä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)

Note
Huomio

Ä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

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

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

  3. Käynnistä säikeet: Kun jokainen säie on luotu, käynnistä se kutsumalla start()-metodia.

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

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 7

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Awesome!

Completion rate improved to 3.33

bookMonisä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)

Note
Huomio

Ä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

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

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

  3. Käynnistä säikeet: Kun jokainen säie on luotu, käynnistä se kutsumalla start()-metodia.

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

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 7
some-alt