Ero nukkumisen ja odottamisen välillä Java-tilassa

Keskeinen ero - nukkua vs odota sisään Jaava
 

Lepotila ja odotus ovat kaksi tapaa, joita Java käyttää monisäikeisiin. Lepomenetelmä kuuluu ketjuluokkaan, kun taas odotusmenetelmä on objektiluokasta. avainero välillä nukkua ja odottaa Java on, että nukkumista käytetään keskeyttämään nykyisen säikeen suorittaminen määrätyn millisekuntimäärän ajan, kun taas odotusmenetelmää käytetään saamaan nykyinen säie odottamaan, kunnes toinen säie kutsuu objektiin ilmoituksen tai ilmoituksen kaikki -menetelmää.

Lanka on käyttöjärjestelmän pienin prosessointiyksikkö. Se on yksi peräkkäinen ohjausvuo ohjelman sisällä. Langat ovat kevyitä. Monisäikeinen on mekanismi useiden ketjujen ajamiseen samanaikaisesti. Ohjelmointikielet, kuten Java, tukevat monisäikeisyyttä. Monisäikeityksellä on etuja, koska se sallii useiden ketjujen ajamisen samanaikaisesti ja langat ovat toisistaan ​​riippumattomia. Java-ohjelmassa on menetelmiä, joita voidaan käyttää monisäikeisiin. Kaksi heistä nukkuu ja odottaa.

SISÄLLYS

1. Yleiskatsaus ja keskeiset erot
2. Mikä on Java Java-tilassa
3. Mikä on Java-odotusta?
4. Yhdenmukaisuudet nukkumisen ja odottamisen välillä Java-tilassa
5. Vertailu rinnakkain - nukkua vs odota Java-taulukon muodossa
6. Yhteenveto

Mikä on uni Java-tilassa?

Käyttöjärjestelmässä on käynnissä useita prosesseja. Prosessi on suoritettava ohjelma. Jokaisessa prosessissa voi olla useita ketjuja, ja näiden ketjujen välillä tapahtuu kontekstinvaihto. Java-sovelluksessa on kaksi tapaa luoda säie. Toisin sanoen laajentamalla säieluokkaa tai toteuttamalla Runnable-käyttöliittymä. Ketjuluokassa on rakentajia ja menetelmiä ketjun toimintojen luomiseksi ja suorittamiseksi. Kierreluokka laajentaa objektiluokkaa ja toteuttaa suoritettavat käyttöliittymät. Suoritettavan käyttöliittymän tulisi toteuttaa mikä tahansa luokka, jonka ilmentymät on tarkoitettu ketjun suorittamaan. Kun säie toteutuu, suoritettava koodi kirjoitetaan suoritusmenetelmän sisään. Langan, jonka pitäisi suorittaa, valitsee säikeiden ajoittaja. Vain yksi säie kulkee yhdessä prosessissa.

Lanka kulkee useiden vaiheiden läpi. Kun olet luonut objektin ketjuluokasta, ohjelmoija voi vedota aloitusmenetelmään. Ennen menetelmän käyttämistä langan sanotaan olevan uudessa tilassa. Lankaohjelma valitsee kuljettavan langan. Jos säiettä ei ole vielä valittu ketjuun, mutta jos käynnistetään käynnistysmenetelmä, säie on ajettavissa. Kun säikeiden ajoittaja on valinnut suoritettavan säikeen, se siirtyy käynnistystilaan. Jos säie on elossa, mutta sitä ei tällä hetkellä voida suorittaa, se on suorittamaton tai estetty. Ajon menetelmän suorittamisen jälkeen säie menee päättyneeseen tilaan. Nämä ovat säikeiden elinkaaren päävaiheet.

Lankaluokassa on saatavana erilaisia ​​menetelmiä erilaisten tehtävien suorittamiseen. Lepomenetelmää käytetään nukkumaan menetelmällä tietyn ajan. Lepomenetelmän syntaksi on julkinen tyhjä uni (pitkät millisekunnit), joka aiheuttaa InterruptedException-tilan. Se saa parhaillaan suorittavan säiettä lopettamaan suorituksen väliaikaisesti määrätyn millisekunnin ajan. Jos toinen säie katkaisee nykyisen langan, nykyisen langan keskeytetty tila poistetaan, kun tämä poikkeus heitetään.

Kuva 01: Java-ohjelma nukkumistavalla

Yllä olevan ohjelman mukaan suoritusmenetelmä sisältää koodin, joka tulisi suorittaa. Pääohjelmassa luodaan kaksi esimerkkiTermi1-objektia, ja niihin kutsutaan käynnistysmenetelmiä. Tämän avulla koodi voidaan suorittaa suoritustavan sisällä. Vain yksi säie suoritetaan kerrallaan. Kierteen kanssa. uni (1000); antaa ensimmäisen säikeen lopettaa suorituksen 1000 millisekunnin ajan. Kun lanka nukkuu, säikeiden ajoittaja poimii toisen langan.

Mikä on Java-odottelu?

Useat ketjut voivat käyttää jaettua resurssia. Se voi aiheuttaa väärän tulosteen. Ketjujen synkronoinnilla voidaan tehdä vain yksi säie pääsemään jaettuun resurssiin. Oletetaan tilanne seuraavasti. Jos t1 ja t2 on kaksi ketjua, t1 alkaa tallentaa arvoja tekstitiedostoon nimeltä Text1.txt. Näitä arvoja käytetään muihin laskelmiin, kun t1 palaa. Jos t2 alkaa ennen kuin t1 palaa, t2 voi muuttaa t1: n tallentamia arvoja. Tämä voi aiheuttaa t1: n tuottamaan väärän tulosteen. Kun t1 alkaa käyttää Text1.txt-tiedostoa synkronoinnin avulla, tiedosto voidaan lukita, joten siihen pääsee vain t1. T2 ei voi muuttaa sitä, ennen kuin t1 vapauttaa lukon pääsyä varten kyseiseen tekstitiedostoon. Kun tehtävä on suoritettu, t1 voi vapauttaa lukon. Lukko tunnetaan myös nimellä näyttö.

Kierteiden synkronointi voidaan saavuttaa ketjujen välisellä viestinnällä. Kriittinen osa on koodisegmentti, joka käyttää jaettuja resursseja. Kierteiden välisessä viestinnässä lanka keskeytetään käynnissä sen kriittisessä osassa, ja toisen langan annetaan tulla sisään samaan kriittiseen osaan, joka suoritetaan. Se toteutetaan käyttämällä odota, ilmoita ja ilmoita kaikki -menetelmiä. He kuuluvat Object-luokkaan. Odotusmenetelmää käytetään sallimaan nykyisen säikeen vapauttaa lukko ja odottaa, kunnes toinen säie vetoaa objektiin ilmoittamisen tai ilmoittamisen kaikkiin menetelmiin. Ilmoitusmenetelmää käytetään herättämään yksi lukko odottava säie. TeavitaaKaikki herättää kaikki ketjut, jotka odottavat lukkoa.

Kuva 02: Laskinluokka

Kuva 03: Päämenetelmä

Laskin-luokka laajentaa säiettä. Synkronoitu lohko on suoritusmenetelmän sisällä. For loop- ja ilmoitustapa on synkronoidun lohkon sisällä. Päämenetelmän sisällä kutsutaan kyseiseen instanssiin luodun säikeen esiintymä ja aloitusmenetelmä. Päämenetelmä odottaa, kunnes säie antaa ilmoituksen. Ohjelmaa suoritettaessa päämenetelmä odottaa ajon menetelmän koko suorittamista ja odottaa ilmoitustapaa. Kun ilmoitustapaa kutsutaan, päämenetelmä lopettaa odottamisen ja alkaa suorittaa loput koodi. Pää odottaa, kunnes Laskin-ketju on valmis. Lopuksi summan tulos tulostuu.

Jos synkronoitua lohkoa ei ole ja jos päämenetelmällä on alla oleva koodi, se antaa ulostulon nollaksi, koska se ei odota toisen säikeen valmistumista.

Laskin t1 = uusi laskin ();

 t1. alkaa ();

System.out.println (t1.sum);

Mikä on nukkumisen ja odottamisen samankaltaisuus Java-tilassa?

  • Sekä nukkuminen että odotus ovat menetelmiä, joita voidaan käyttää toteuttaessaan monisäikeinen Java

Mikä on nukkumisen ja odottamisen ero Java-tilassa?

uni vs odota Java

Lepomenetelmä saa nykyisen säikeen keskeyttämään suorituksen tietylle määrälle millisekuntia, järjestelmän ajastimien ja aikataulujen tarkkuuden ja tarkkuuden mukaisesti.. Odotusmenetelmä saa nykyisen säikeen odottamaan, kunnes toinen säie kutsuu objektiin ilmoittamista tai ilmoittamista koskevan menetelmän.
 Yhdistys Lockin kanssa
Lepotapa ei vapauta objektin lukitusta synkronoinnin aikana. Odotapa vapauttaa lukituksen synkronoinnin aikana.
Suoritusmenetelmä
Lepomenetelmä suoritetaan nykyiselle säikeelle. Objektissa kutsutaan odotusmenetelmää.
 Yhdistetty luokka
Uni on menetelmä ketjuluokassa. Odotus on objektiluokan menetelmä.
Valmistuminen
Lepoprosessi on valmis, kun määritetty aika on ohitettu. Odotusmenetelmä keskeytetään kutsumalla értes- tai ilmoittamismenetelmiä.

Yhteenveto - nukkua vs odota sisään Jaava

Käyttöjärjestelmässä on käynnissä useita prosesseja. Jokaisessa prosessissa voi olla useita ketjuja. Lanka on käyttöjärjestelmän pienin prosessointiyksikkö. Java-ohjelmointikieli tukee monisäikeistä. Se mahdollistaa useiden ketjujen ajamisen samanaikaisesti. Lepotila ja odotus ovat kaksi menetelmää, jota voidaan käyttää monisäikeistämistä toteutettaessa. Ero Java-odotuksen ja odottamisen välillä on se, että nukkumista käytetään keskeyttämään nykyisen säikeen suorittaminen määrätyllä määrällä millisekuntia, kun taas odotusmenetelmällä saadaan nykyinen säie odottamaan, kunnes toinen säie kutsuu ilmoituksen tai teavitaa kaikkiin. menetelmä kohteelle.

Viite:

1. ”Kiertoviestintä Java - Javatpoint.”. JavaTPoint. Saatavilla täältä
2. Kierteen välinen Viestintä Java-monisäikeisellä Core Java -opetus | Studytonight. Saatavilla täältä