Vertailukaavio
Vertailun perusteet | nukkua | odota |
---|---|---|
perustiedot | Lepotapa ei vapauta objektin lukkoa, ennen kuin se keskeytyy. | Odota-menetelmä vapauttaa objektin lukon, jotta muut objektit voivat suorittaa, kunnes ilmoitus tai ilmoitusAll -menetelmä kutsutaan. |
luokka | Lepotapa määritellään Thread-luokassa. | Odotusmenetelmä on määritelty Objektiluokassa. |
Synkronoitu | Lepotapaa ei tarvitse kutsua synkronoidussa yhteydessä. | Odota-menetelmää on kutsuttava synkronoidussa yhteydessä. |
Valmistuminen | Lepotilan toteutus suoritetaan, kun säike keskeyttää sen tai lepotilan aika on päättynyt. | Odota menetelmän toteutus suoritetaan, kun ilmoitus () tai ilmoitusAll () -menetelmä keskeyttää sen. |
Staattinen | Lepotapa on staattinen menetelmä. | Odotusmenetelmä ei ole staattinen, minkä vuoksi se tarvitsee esille sen vetämistä. |
suoritus | Uniameno suoritetaan nykyisellä langalla. | Odotusmenetelmä suoritetaan objektilla. |
poikkeus | InterruptedException | IllegalArgumentException, IllegalMonitorStateException, keskeytettyException. |
Lepotavan määritelmä
Lepotapa on Thread- luokan staattinen menetelmä. Lepotapa käynnistetään, kun lanka ei halua suorittaa mitään tehtävää tietyn ajan. Lepotapahtuma suorittaa sen suorittamisen joko silloin, kun menetelmän aika on umpeutunut, tai se keskeytyy jollakin muulla langalla suorituksessa. Kun nukkumismenetelmä on päättynyt, lanka saavuttaa jälleen ajettavan tilan. Vuodesta lepotilasta on kaksi, kuten alla on esitetty.
julkinen staattinen natiivi tyhjä uni (pitkä millisekunti); julkinen staattinen tyhjä uni (pitkä millisekuntia ja int nanosekunnissa);
Edellä mainitussa kahdessa muodossa voit tarkkailla aikaa mainitaan sekä lepotilan muodossa. Tämä johtuu siitä, että kierre nukkuu aina parametrissa mainittuun tiettyyn aikaan. Minkä tahansa muun langan keskeytyksen voi keskeyttää lepotapa sen suorittamisen aikana; siten se voi heittää keskeytetyn poiston. Sinun on huolehdittava siitä, että poikkeus käsitellään joko kokeiluversiolla tai Throws avainsanoja muuten, se johtaa kääntymisajan virheeseen. Lepotapa pidättää nykyisen objektin lukituksen suorituksessa ja ei salli minkään muun objektin suorittamista ennen kuin se lopettaa sen suorittamisen.
Odotusmenetelmän määritelmä
Odota on Objekti- luokassa määritelty menetelmä. Odotusmenetelmää käytetään, kun useat tehtävät (säikeet) kamppailevat samasta resurssista yksi kerrallaan. Odotustapa, kun sitä kutsutaan, vapauttaa lukituksen sen kohteen kohdalle, joka on käyttänyt odotusmenetelmää. Ja antaa mahdollisuus toiselle objektille saada suoritettua, kunnes ilmoitustapa otetaan käyttöön, joka jatkaa odotusmenetelmällä vapautetun objektin lukituksen jatkamista. Odotusmenetelmällä on seuraava muoto.
odota(); odota (pitkä millisekunti); odota (pitkä millisekunnissa, int nanosekunnissa);
Kuten edellä mainitussa kolmessa odotusmenetelmän muodossa, ensimmäisellä menetelmällä ei ole aikaparametriä, vaan se tarkoittaa, että odotusmenetelmän suorittaminen jatkuu, kunnes ilmoitus- tai informaatiomenetelmää ei käytetä. Kahdessa muussa menetelmässä on aikaparametrit. Joten ne suoritetaan, kunnes aika päättyy tai kunnes ilmoitus tai noitfyAll-menetelmä käynnistetään aikaisemmin kuin aika päättyy. Odotusmenetelmä voi heittää poikkeuksia. IllegalArgumentException, jos kulunut aika-argumentti on negatiivinen. IllegalMonitorStateException, jos nykyinen säike ei käytä resurssia. Keskeytetty poikkeama, jos odotusmenetelmä keskeytyy.
Unen ja odotusmenetelmän keskeiset erot Java-järjestelmässä
- Pääasema, joka erottaa lepo- ja odotusmenetelmän, on se, että lepotapa pitää objektin lukon, kunnes se keskeytyy tai sen aika päättyy. Odotusmenetelmä vapauttaa kuitenkin sen kohteen lukituksen, joka kutsuu sitä, ja antaa muille kohteille mahdollisuuden suorittaa.
- Lepotapa määritellään Thread- luokassa, kun taas odotusmenetelmä on määritelty Object- luokassa.
- Uniamenoa ei tarvitse kutsua synkronoidusta kontekstista. Mutta odotusmenetelmää on kutsuttava synkronoidusta.
- Lepotapa herätetään, jos menetelmän aika on päättynyt tai toinen säike keskeyttää. Odotusmenetelmä herätetään
kun ilmoitus tai ilmoitus Kaikki menetelmä on käytössä. - Lepotapa on staattinen menetelmä, kun taas odotusmenetelmä ei ole staattinen menetelmä.
- Uniameno suoritetaan nykyisellä langalla, kun taas odotusmenetelmä suoritetaan sille kutsuvalle objektille.
- Lepotavan aiheuttama poikkeus on keskeytetty, mutta poikkeukset thrwon by wait -menetelmällä ovat IllegalArgumentException, IllegalMonitorStateException, InterruptedException .
johtopäätös:
Kun useat säikeet haluavat käyttää samaa resurssia yksi kerrallaan, on käytettävä odotusmenetelmää. Kun lanka ei halua suorittaa mitään tehtävää, on käytettävä lepotapaa.