Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Haaste: Semafori | Korkean Tason Synkronointimekanismit
Quizzes & Challenges
Quizzes
Challenges
/
Monisäikeisyys Javassa

bookHaaste: Semafori

Tehtävä

Kuvittele, että sinulla on resurssi, johon voi samanaikaisesti päästä käsiksi vain kaksi säiettä. Tehtävänäsi on luoda ohjelma, joka käyttää semaphore resurssin käytön hallintaan.

Ehdot:

  1. Sinulla on Resource luokka, jossa on use() metodi, joka simuloi resurssin käyttöä, esimerkiksi tulostamalla viestin ja aiheuttamalla viiveen;
  2. Sinulla on Worker luokka, joka toteuttaa Runnable-rajapinnan; sen run() metodissa yritetään päästä käsiksi resurssiin käyttäen semaphore;
  3. SemaphoreExample luokassa on main() metodi, joka alustaa semaphore kahdelle säikeelle sekä useita työntekijä-säikeitä, jotka yrittävät käyttää resurssia;
  4. Varmista, että enintään kaksi säiettä voi käyttää resurssia samanaikaisesti.
Note
Huomio

Älä muuta mitään! Sinun tarvitsee toteuttaa vain run()-metodi Worker-luokassa sekä toteuttaa logiikka use()-metodissa Resource-luokassa.

Miten ohjelman tulisi toimia?

Sinulla on 5 säiettä, jotka haluavat suorittaa use()-metodin samanaikaisesti, mutta Semaphore-luokan avulla täytyy rajoittaa samanaikainen suoritus 2 säikeeseen. Heti kun säie vapauttaa Semaphore-olion, toinen säie voi aloittaa tämän metodin suorittamisen. Tämän tilanteen havainnollistamiseksi on suositeltavaa lisätä viive use()-metodiin.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 4

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

bookHaaste: Semafori

Pyyhkäise näyttääksesi valikon

Tehtävä

Kuvittele, että sinulla on resurssi, johon voi samanaikaisesti päästä käsiksi vain kaksi säiettä. Tehtävänäsi on luoda ohjelma, joka käyttää semaphore resurssin käytön hallintaan.

Ehdot:

  1. Sinulla on Resource luokka, jossa on use() metodi, joka simuloi resurssin käyttöä, esimerkiksi tulostamalla viestin ja aiheuttamalla viiveen;
  2. Sinulla on Worker luokka, joka toteuttaa Runnable-rajapinnan; sen run() metodissa yritetään päästä käsiksi resurssiin käyttäen semaphore;
  3. SemaphoreExample luokassa on main() metodi, joka alustaa semaphore kahdelle säikeelle sekä useita työntekijä-säikeitä, jotka yrittävät käyttää resurssia;
  4. Varmista, että enintään kaksi säiettä voi käyttää resurssia samanaikaisesti.
Note
Huomio

Älä muuta mitään! Sinun tarvitsee toteuttaa vain run()-metodi Worker-luokassa sekä toteuttaa logiikka use()-metodissa Resource-luokassa.

Miten ohjelman tulisi toimia?

Sinulla on 5 säiettä, jotka haluavat suorittaa use()-metodin samanaikaisesti, mutta Semaphore-luokan avulla täytyy rajoittaa samanaikainen suoritus 2 säikeeseen. Heti kun säie vapauttaa Semaphore-olion, toinen säie voi aloittaa tämän metodin suorittamisen. Tämän tilanteen havainnollistamiseksi on suositeltavaa lisätä viive use()-metodiin.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 4
some-alt