Logo fi.removalsclassifieds.com

Ero nukkumisen ja odotuksen välillä (taulukon kanssa)

Sisällysluettelo:

Anonim

Javalla on useita tapoja suorittaa tiettyjä toimintoja. Method on koodiryhmä, joka toimii vain kun sitä kutsutaan; ja saattaa palauttaa tuloksen tai ei.

Menetelmiä, kuten nukkuminen ja odotus, käytetään monisäikeistykseen. Molemmat pysäyttävät ja lähettävät langan odottamaan, mutta niiden toiminnassa on suuria eroja.

Nukkuminen vs odotus

Ero sleep()- ja wait()-menetelmien välillä on se, että sleep()-menetelmää käytetään ohjelmassa keskeyttämään nykyisen säikeen suorittaminen tietyksi ajanjaksoksi, kun odotusmenetelmää käytetään ohjelmassa keskeyttämiseen tai keskeyttämiseen. nykyistä säiettä, kunnes tiettyjä menetelmiä kutsutaan.

Unimenetelmän käytön aikana nykyinen säie ei menetä näytön omistusoikeutta. Uni on staattinen menetelmä ja osa luokkasäiettä. Odotusajan umpeuduttua säie palaa alkuperäiseen ajettavaan tilaan. Se varmistaa suorittimen täydellisen käytön odottamisen aikana.

Sen sijaan Java-ohjelmassa käytetään wait()-menetelmää nykyisen säikeen määräämiseen odottamaan, kunnes toista säiettä ei kutsuta kyseiselle objektille. Lanka jatkaa sitten suorittamista, kun se on saanut näytön hallinnan. Se ei ole staattinen menetelmä toisin kuin uni, ja se on osa objektiluokkaa.

Nukkumisen ja odotuksen vertailutaulukko

Vertailuparametrit Nukkua Odota
Luokka Unimenetelmä on osa lankaluokkaa Odotusmenetelmä on osa objektiluokkaa
Menetelmän tyyppi Uni on staattinen menetelmä Odotus ei ole staattinen menetelmä
Soittotekniikka Unimenetelmää voidaan kutsua synkronoidun kontekstin ulkopuolelta Odotusmenetelmää voidaan kutsua vain synkronoidusta kontekstista
Lukon vapautus Lepotila ei vapauta objektin lukitusta määritetyn aikakatkaisun ajaksi synkronoinnin aikana Odotusmenetelmä vapauttaa objektin lukon, jotta sillä on mahdollisuus suorittaa synkronoinnin aikana
julistus julkinen staattinen tyhjä uni() julkinen lopullinen tyhjä odotus()

Mikä on uni?

Säie sleep() on Java-ohjelman staattinen menetelmä, joka keskeyttää nykyisen säikeen ja asettaa sen odotustilaan määrätyksi ajaksi. Kun odotustila ja aika on ohi, säiettä vaihtuu ajettavaan tilaan. Ja sitten odottaa CPU:ta jatkosuoritusta varten.

Tämän menetelmän tavoitteena on luoda muutaman sekunnin viive ohjelmaan ja samanaikaisesti käyttää CPU:ta mahdollisimman paljon. Jos järjestelmä on varattu tai ylikuormitettu, odotus- tai taukoaika on enemmän ja muuten se olisi pienempi tai yhtä suuri kuin todellinen aika.

Unimenetelmän palautustyyppi voidaan sanoa voidiksi, koska se ei palauta arvoa. Unilanka ei menetä näyttöä tai lukitse jo hankkimaansa lankaa. Jos uni on joka tapauksessa häiriintynyt, säie heittäisi Interrupted_Exceptionin. Todellinen kesto, jonka säiettä nukkuisi, riippuu yleensä ajastimista ja järjestelmäajastimista, jotka ovat osa käyttöjärjestelmää.

Unimenetelmän syntaksi on - julkinen staattinen tyhjiö (pitkät millisekuntia)

julkinen staattinen tyhjä lepo (pitkät millisekunnit, int nanosekuntit)

Tässä millisekunnit ja nanosekunnit ovat aika, jonka lanka nukkuisi.

Mikä on Odota?

Wait() on menetelmä, jota käytetään säikeiden väliseen viestintään. Aina kun wait()-säiettä käytetään, kutsuva tai nykyinen säiettä keskeytetään ja keskeytetään, kunnes järjestelmässä kutsutaan menetelmiä, kuten notify() tai notifyAll().

notify()-menetelmä herättäisi tietyn säikeen, kun taas notifyAll() on sovellettavissa jokaiselle säikeelle. Synkronoituna odotusmenetelmä luopuu resurssien lukituksesta. Wait-metodilla ei ole paluuarvoa, joten voidaan sanoa, että se palauttaa void.

Odotusmenetelmän kaksi poikkeusta ovat Interrupted_Exception (kun nykyinen säie keskeytyy lepotilassa) ja IllegalMonitorStateException (kun nykyinen säie ei ole näytöllä olevan objektin omistaja).

Wait-menetelmä on osa objektiluokkaa. Menetelmä on vain sovellettavissa ja sitä voidaan kutsua synkronoidun lohkon kautta. Odotusmenetelmä vapauttaa keskeytetyn tai lukitun näytön synkronoinnin aikana. Ja Wait-menetelmä sallii synkronoitujen useiden säikeiden pääsyn samaan objektiin yksitellen.

Wait-metodin syntaksi on – public final void wait()

Tärkeimmät erot nukkumisen ja odotuksen välillä

Johtopäätös

Sleep and Wait -menetelmä ovat Javan alkuperäisiä menetelmiä. Ja molempia käytetään laajalti saamaan nykyinen meneillään oleva säie tilaan, jota ei voi ajaa. Molempia menetelmiä käytetään ohjelmassa monisäikeistykseen.

Lepotila tarjoaa ainutlaatuisen mahdollisuuden lukita näyttö tietyksi ajaksi, joka yleensä kestää nanosekunneista millisekunteihin. Mutta odotusmenetelmä lukitsee tai pysäyttää näytön, kunnes toinen menetelmä vedetään, jolloin kesto ei pysy spesifisenä kuin lepotilassa.

Ne eroavat toisistaan ​​tietyn toiminnan, kuten luokan, menetelmän, synkronoinnin ja lukon pito- ja vapautuskeston sekä useiden muiden parametrien suhteen. Usein ohjelmoijat hämmentyvät siitä, mikä menetelmä voisi olla ihanteellinen langan nukkumiseen. Menetelmien käyttö riippuu vaatimuksista, kuten tarpeesta, kiireellisyydestä ja nykyisen säikeen ajanjaksosta.

Ero nukkumisen ja odotuksen välillä (taulukon kanssa)