Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Asynkronisen Ohjelmoinnin Perusteet | Monisäikeisyyden Parhaat Käytännöt
Quizzes & Challenges
Quizzes
Challenges
/
Monisäikeisyys Javassa

bookAsynkronisen Ohjelmoinnin Perusteet

Tässä tarkastelemme, mitä asynkroninen ohjelmointi on ja miten se eroaa monisäikeisyydestä. Tässä osiossa ei ole laajoja käytännön esimerkkejä, sillä käsittelemme niitä seuraavissa luvuissa. Tällä kertaa keskitymme enemmän teoriaan.

Mitä on asynkroninen ohjelmointi?

Kuvittele verkkopalvelin, joka käsittelee käyttäjien pyyntöjä. Kun käyttäjä tekee pyynnön tietojen hakemiseksi tietokannasta, palvelin voi käyttää asynkronista ohjelmointia käynnistääkseen tämän pyynnön ja jatkaa muiden pyyntöjen käsittelyä odottamatta toiminnon valmistumista. Näin palvelin ei jää toimettomaksi odottaessaan vastausta tietokannasta!

Note
Huomautus

Asynkronisessa ohjelmoinnissa toiminta muistuttaa useiden ruokien valmistamista samanaikaisesti.

Takaisinkutsut

Takaisinkutsut ovat keskeinen osa asynkronista ohjelmointia. Niiden avulla voidaan suorittaa tiettyjä toimintoja, kun tehtävä on valmis, ilman että pääsäiettä estetään.

Esimerkiksi, kun tehdään asynkroninen pyyntö palvelimelle, takaisinkutsufunktio suoritetaan, kun palvelin lähettää vastauksen.

Mikä sitten on ero monisäikeisyyden ja asynkronisuuden välillä?

Laajassa merkityksessä monisäikeisyys tarkoittaa ohjelman kykyä suorittaa useita tehtäviä samanaikaisesti hyödyntämällä eri suoritussäikeitä.

Kuvittele ravintola, jossa kokit (säikeet) työskentelevät samanaikaisesti eri annosten parissa. Yksi kokki valmistaa keittoa, toinen grillaa pihviä ja kolmas pilkkoo vihanneksia. Jokainen kokki työskentelee itsenäisesti, mutta he kaikki työskentelevät samaan aikaan palvellakseen asiakkaita nopeammin.

Kuvittele ravintola, jossa yksi kokki (pääsäie) valmistaa monimutkaista annosta, mutta hänen täytyy odottaa veden kiehumista (taustatehtävä). Sen sijaan, että hän seisoisi ja odottaisi (blokkaa), kokki voi tehdä muuta työtä, kuten pilkkoa vihanneksia. Kun vesi kiehuu, hän saa ilmoituksen ja jatkaa ruoanlaittoa.

Asynkronia Javassa voidaan esittää seuraavilla luokilla/rajapinnoilla:

  • Future (olemme käsitelleet): Rajapinta, joka edustaa asynkronisen laskentatehtävän tulosta. Menetelmien avulla voidaan tarkistaa, onko tehtävä valmis, odottaa sen valmistumista ja hakea tulos;
  • CompletableFuture (käsittelemme seuraavassa luvussa): Luokka, joka toteuttaa Future-rajapinnan ja tarjoaa mahdollisuuksia rakentaa monimutkaisia asynkronisia laskentoja. Menetelmien avulla voidaan yhdistää tehtäviä, käsitellä virheitä ja suorittaa toimintoja tehtävien valmistuttua;
  • Executor: Rajapinta, joka tarjoaa execute-metodin, joka ottaa tehtävän Runnable-rajapinnalla ja suorittaa sen asynkronisesti;
  • ExecutorService (olemme käsitelleet): Laajentaa Executor-rajapintaa lisäämällä menetelmiä elinkaaren hallintaan ja tehtävien suorittamiseen, jotka palauttavat tuloksen.
Note
Huomio

Asynkroninen ohjelmointi auttaa luomaan herkempiä ja tehokkaampia sovelluksia välttämällä jumiutumisia ja parantamalla resurssien hyödyntämistä.

1. Mikä on asynkronisen ohjelmoinnin perusperiaate?

2. Mikä on keskeinen ero monisäikeisyyden ja asynkronisuuden välillä?

3. Minkä ongelman asynkroninen ohjelmointi ratkaisee verrattuna perinteiseen monisäikeisyyteen?

question mark

Mikä on asynkronisen ohjelmoinnin perusperiaate?

Select the correct answer

question mark

Mikä on keskeinen ero monisäikeisyyden ja asynkronisuuden välillä?

Select the correct answer

question mark

Minkä ongelman asynkroninen ohjelmointi ratkaisee verrattuna perinteiseen monisäikeisyyteen?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 5

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Suggested prompts:

Can you explain more about how callbacks work in asynchronous programming?

What are the main differences between multithreading and asynchrony?

Can you give real-world examples where asynchronous programming is preferred over multithreading?

Awesome!

Completion rate improved to 3.33

bookAsynkronisen Ohjelmoinnin Perusteet

Pyyhkäise näyttääksesi valikon

Tässä tarkastelemme, mitä asynkroninen ohjelmointi on ja miten se eroaa monisäikeisyydestä. Tässä osiossa ei ole laajoja käytännön esimerkkejä, sillä käsittelemme niitä seuraavissa luvuissa. Tällä kertaa keskitymme enemmän teoriaan.

Mitä on asynkroninen ohjelmointi?

Kuvittele verkkopalvelin, joka käsittelee käyttäjien pyyntöjä. Kun käyttäjä tekee pyynnön tietojen hakemiseksi tietokannasta, palvelin voi käyttää asynkronista ohjelmointia käynnistääkseen tämän pyynnön ja jatkaa muiden pyyntöjen käsittelyä odottamatta toiminnon valmistumista. Näin palvelin ei jää toimettomaksi odottaessaan vastausta tietokannasta!

Note
Huomautus

Asynkronisessa ohjelmoinnissa toiminta muistuttaa useiden ruokien valmistamista samanaikaisesti.

Takaisinkutsut

Takaisinkutsut ovat keskeinen osa asynkronista ohjelmointia. Niiden avulla voidaan suorittaa tiettyjä toimintoja, kun tehtävä on valmis, ilman että pääsäiettä estetään.

Esimerkiksi, kun tehdään asynkroninen pyyntö palvelimelle, takaisinkutsufunktio suoritetaan, kun palvelin lähettää vastauksen.

Mikä sitten on ero monisäikeisyyden ja asynkronisuuden välillä?

Laajassa merkityksessä monisäikeisyys tarkoittaa ohjelman kykyä suorittaa useita tehtäviä samanaikaisesti hyödyntämällä eri suoritussäikeitä.

Kuvittele ravintola, jossa kokit (säikeet) työskentelevät samanaikaisesti eri annosten parissa. Yksi kokki valmistaa keittoa, toinen grillaa pihviä ja kolmas pilkkoo vihanneksia. Jokainen kokki työskentelee itsenäisesti, mutta he kaikki työskentelevät samaan aikaan palvellakseen asiakkaita nopeammin.

Kuvittele ravintola, jossa yksi kokki (pääsäie) valmistaa monimutkaista annosta, mutta hänen täytyy odottaa veden kiehumista (taustatehtävä). Sen sijaan, että hän seisoisi ja odottaisi (blokkaa), kokki voi tehdä muuta työtä, kuten pilkkoa vihanneksia. Kun vesi kiehuu, hän saa ilmoituksen ja jatkaa ruoanlaittoa.

Asynkronia Javassa voidaan esittää seuraavilla luokilla/rajapinnoilla:

  • Future (olemme käsitelleet): Rajapinta, joka edustaa asynkronisen laskentatehtävän tulosta. Menetelmien avulla voidaan tarkistaa, onko tehtävä valmis, odottaa sen valmistumista ja hakea tulos;
  • CompletableFuture (käsittelemme seuraavassa luvussa): Luokka, joka toteuttaa Future-rajapinnan ja tarjoaa mahdollisuuksia rakentaa monimutkaisia asynkronisia laskentoja. Menetelmien avulla voidaan yhdistää tehtäviä, käsitellä virheitä ja suorittaa toimintoja tehtävien valmistuttua;
  • Executor: Rajapinta, joka tarjoaa execute-metodin, joka ottaa tehtävän Runnable-rajapinnalla ja suorittaa sen asynkronisesti;
  • ExecutorService (olemme käsitelleet): Laajentaa Executor-rajapintaa lisäämällä menetelmiä elinkaaren hallintaan ja tehtävien suorittamiseen, jotka palauttavat tuloksen.
Note
Huomio

Asynkroninen ohjelmointi auttaa luomaan herkempiä ja tehokkaampia sovelluksia välttämällä jumiutumisia ja parantamalla resurssien hyödyntämistä.

1. Mikä on asynkronisen ohjelmoinnin perusperiaate?

2. Mikä on keskeinen ero monisäikeisyyden ja asynkronisuuden välillä?

3. Minkä ongelman asynkroninen ohjelmointi ratkaisee verrattuna perinteiseen monisäikeisyyteen?

question mark

Mikä on asynkronisen ohjelmoinnin perusperiaate?

Select the correct answer

question mark

Mikä on keskeinen ero monisäikeisyyden ja asynkronisuuden välillä?

Select the correct answer

question mark

Minkä ongelman asynkroninen ohjelmointi ratkaisee verrattuna perinteiseen monisäikeisyyteen?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 5
some-alt