Tärkein ero - nukkua vs odottaa Java-tilassa
Lepotila ja odotus ovat kaksi menetelmää, joita käytetään monisäikeiseen Java-järjestelmään. Lepotapa kuuluu säie-luokkaan, kun taas odotusmenetelmä kuuluu Object-luokkaan. Keskeinen ero unen ja odotuksen välillä Java-ohjelmassa on, että lepotilaa käytetään keskeyttämään nykyisen säikeen suorittaminen määrätylle millisekunnille, kun taas odotusmenetelmää käytetään saamaan nykyinen ketju odottamaan, kunnes toinen säie kutsuu ilmoituksen objectAll-menetelmä objektille.
Lanka on käyttöjärjestelmän pienin prosessointiyksikkö. Se on yksi peräkkäinen ohjausvirta ohjelmassa. Langat ovat kevyitä. Monisäikeisyys on mekanismi, joka suorittaa useita ketjuja samanaikaisesti. Ohjelmointikielet, kuten Java, tukevat monisäikeisyyttä. Monisäikeisyydellä on etuja, koska sen avulla voidaan suorittaa useita ketjuja samanaikaisesti ja langat ovat toisistaan riippumattomia. Java: ssa on menetelmiä, joita voidaan käyttää monisäikeisiin. Kaksi heistä on unta ja odota.
SISÄLLYS
1. Yleiskatsaus ja avainerot
2. Mikä on uni Java-käyttöjärjestelmässä
3. Mikä on odotus Java-ohjelmassa
4. Samankaltaisuudet unen ja odottamisen välillä Java-ohjelmassa
5. Vertailu vierekkäin - uni vs odotus Java-muodossa taulukkomuodossa
6. Yhteenveto
Mikä on nukkuminen Java-tilassa?
Käyttöjärjestelmässä on käynnissä useita prosesseja. Prosessi on suoritettava ohjelma. Jokaisella prosessilla voi olla useita ketjuja, ja näiden ketjujen välillä tapahtuu kontekstinvaihto. Java-ohjelmassa ketju voidaan luoda kahdella tavalla. Eli laajentamalla ketjuluokkaa tai toteuttamalla Runnable-käyttöliittymä. Thread-luokassa on konstruktoreita ja menetelmiä ketjun operaatioiden luomiseksi ja suorittamiseksi. Thread-luokka laajentaa Object-luokkaa ja toteuttaa Runnable-käyttöliittymän. Runnable-käyttöliittymän tulisi olla kaikkien luokkien, joiden esiintymät on tarkoitettu toteutettavaksi ketjun avulla. Kun ketju suoritetaan, suoritettavan koodin kirjoitetaan suoritustavan sisään. Lankojen ajoitin valitsee käynnissä olevan ketjun. Vain yksi ketju kulkee yhdessä prosessissa.
Lanka käy läpi useita vaiheita. Kun olet luonut Thread-luokan objektin, ohjelmoija voi käyttää käynnistystapaa. Ennen menetelmän käyttämistä ketjun sanotaan olevan uudessa tilassa. Lankojen ajoitin valitsee suoritettavan säikeen. Jos ketjun ajastin ei ole vielä valinnut ketjua, mutta jos käynnistystapaa käytetään, ketju on ajettavassa tilassa. Kun ketjun ajastin on valinnut suoritettavan langan, se siirtyy käynnissä olevaan tilaan. Jos ketju on elossa, mutta sitä ei tällä hetkellä voida käyttää, se on ei-ajettava tai estetty. Suoritustavan päättymisen jälkeen säie siirtyy lopetettuun tilaan. Nämä ovat langan elinkaaren päävaiheet.
Lankaluokassa on useita tapoja suorittaa erilaisia tehtäviä. Unimenetelmää käytetään menetelmän nukuttamiseen tietyn ajan. Nukkumistavan syntaksi on julkinen tyhjä uni (pitkät millisekunnit) heittää keskeytetyn poikkeuksen. Se saa käynnissä olevan säikeen lopettamaan suorituksen väliaikaisesti tietyn määrän millisekunteja. Jos toinen ketju keskeyttää nykyisen säikeen, nykyisen säikeen keskeytynyt tila tyhjennetään, kun tämä poikkeus heitetään.
Kuva 01: Java-ohjelma lepotavalla
Yllä olevan ohjelman mukaan suoritustapa sisältää suoritettavan koodin. Pääohjelmassa luodaan kaksi ExampleThread1-objektia, joihin käynnistystavat kutsutaan. Tämä sallii koodin suorittamisen suoritustavan sisällä. Vain yksi ketju suoritetaan kerrallaan. Langan kanssa. uni (1000); sallii ensimmäisen ketjun lopettaa suorituksen 1000 millisekunnin ajan. Kun lanka nukkuu, ketjun ajastin poimii toisen säikeen.
Mitä odottaa Java?
Useat ketjut voivat käyttää jaettua resurssia. Se voi aiheuttaa virheellisen tuotoksen. Kierteen synkronointia voidaan käyttää vain yhden ketjun käyttämiseen jaettuun resurssiin. Oletetaan tilanne seuraavasti. Jos ketjuja on t1 ja t2, t1 alkaa tallentaa arvoja tekstitiedostoon nimeltä Text1.txt. Näitä arvoja käytetään joissakin muissa laskelmissa, kun t1 palaa. Jos t2 alkaa ennen kuin t1 palaa, t2 voi muuttaa t1: n tallentamia arvoja. Tämä voi aiheuttaa t1: n tuottavan väärän lähdön. 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 lukituksen päästäksesi kyseiseen tekstitiedostoon. Kun tehtävä on suoritettu, t1 voi vapauttaa lukon. Lukko tunnetaan myös nimellä monitori.
Langan synkronointi voidaan saavuttaa langanvälisellä viestinnällä. Kriittinen osa on koodisegmentti, joka käyttää jaettuja resursseja. Lankojen välisessä tiedonsiirrossa lanka keskeytetään kriittisessä osassaan, ja toisen ketjun annetaan tulla samaan kriittiseen osaan suoritettavaksi. Se toteutetaan odotus-, ilmoitus- ja ilmoitustapa -menetelmillä. Ne kuuluvat Object-luokkaan. Odotustapaa käytetään sallimaan nykyisen ketjun vapauttamaan lukitus ja odottamaan, kunnes toinen säie kutsuu objektin ilmoitustapaa. Ilmoitusmenetelmää käytetään herättämään yksi lukitus odottava säie. Ilmoita kaikki herättää kaikki lukkoon odottavat ketjut.
Kuva 02: Laskinluokka
Kuva 03: Päämenetelmä
Laskin-luokka laajentaa säiettä. Synkronoitu lohko on suoritustavan sisällä. For silmukka- ja ilmoitustapa on synkronoidun lohkon sisällä. Päämenetelmän sisällä luodun säikeen ilmentymä ja aloitusmenetelmä kutsutaan kyseiseen ilmentymään. Päämenetelmä odottaa, kunnes säie antaa ilmoituksen. Suoritettaessa ohjelmaa päämenetelmä odottaa suoritustavan koko suoritusta ja odottaa ilmoitusmenetelmää. Kun ilmoitusmenetelmä on kutsuttu, päämenetelmä lopettaa odottamisen ja alkaa suorittaa loput koodista. Main odottaa, kunnes Laskin-säie on valmis. Lopuksi summan tulos tulostetaan.
Jos synkronoitua lohkoa ei ole ja jos päämenetelmällä on alla oleva koodi, se antaa lähdön nollaksi, koska se ei odota toisen ketjun päättymistä.
Laskin t1 = uusi Laskin ();
t1. alkaa ();
System.out.println (t1.sum);
Mikä on nukkumisen ja odottamisen yhtäläisyys Java-tilassa?
Sekä lepotila että odotus ovat menetelmiä, joita voidaan käyttää monisäikeisyyden toteuttamisessa Javassa
Mikä on unen ja odotuksen ero Java-tilassa?
Erilainen artikkeli keskellä taulukkoa
uni vs odota Java |
|
Lepotapa saa nykyisen säikeen keskeyttämään suorituksen määrätyn määrän millisekunteja, riippuen järjestelmän ajastinten ja ajastimien tarkkuudesta ja tarkkuudesta. | Odotustapa saa nykyisen ketjun odottamaan, kunnes toinen säie kutsuu objektille ilmoitustapaa. |
Yhdistys Lockiin | |
Lepotapa ei vapauta objektin lukitusta synkronoinnin aikana. | Odotustapa vapauttaa lukituksen synkronoinnin aikana. |
Suoritustapa | |
Lepotapa suoritetaan nykyiselle langalle. | Odotustapa kutsutaan objektille. |
Liittyvä luokka | |
Uni on menetelmä Thread-luokassa. | Odotus on Object-luokan menetelmä. |
Valmistuminen | |
Nukkumisprosessi on valmis, kun määritetty aika on ohi. | Odotustapa keskeytetään kutsumalla ilmoituksen tai ilmoituksen kaikki menetelmät. |
Yhteenveto - nukkua vs odottaa Java
Käyttöjärjestelmässä on käynnissä useita prosesseja. Jokaisella prosessilla voi olla useita ketjuja. Lanka on käyttöjärjestelmän pienin prosessointiyksikkö. Java-ohjelmointikieli tukee monisäikeisyyttä. Sen avulla voidaan suorittaa useita ketjuja samanaikaisesti. Lepotila ja odotus ovat kaksi menetelmää, joita voidaan käyttää monisäikeisyyden toteuttamisessa. Jaossa olevan unen ja odotuksen välinen ero on siinä, että lepotilaa käytetään keskeyttämään nykyisen säikeen toteutus tietylle millisekunnille, kun taas odotusmenetelmää käytetään saamaan nykyinen säie odottamaan, kunnes toinen säie kutsuu ilmoituksen tai ilmoituksen kaikille menetelmä objektille.