Rekomenduojama, 2024

Redaktoriaus Pasirinkimas

Skirtumas tarp miego () ir laukimo () metodo „Java“

Metodas užmigdo ir laukia skamba taip, kaip atlieka tą pačią užduotį, bet jie labai skiriasi vienas nuo kito. Miego metodas priklauso temos klasei, o laukimo metodas priklauso Objektų klasei. Svarbiausias skirtumas, kuris išskiria abu, yra tai, kad miego metodas užfiksuoja objekto užraktą tol, kol jis bus nutrauktas arba baigiamas jo vykdymas. Kita vertus, laukimo metodas atleidžia objekto užraktą, kad kiti objektai būtų vykdomi iki atnaujinimo pranešimo metodu. Yra daugiau skirtumų tarp miego ir laukimo metodo; juos galite peržiūrėti toliau pateiktoje palyginimo lentelėje.

Palyginimo diagrama

Palyginimo pagrindasmiegolaukti
PagrindinisMiego metodas neatleidžia objekto užrakto, kol jis nebus nutrauktas.Palaukimo metodas atleidžia objekto užraktą, kad kiti objektai įvykdytų iki pranešimo arba pranešimoAll metodas.
KlasėPristabdytosios veiksenos metodas apibrėžtas temos klase.Laukimo metodas apibrėžtas Objektų klasėje.
SinchronizuotaMiego metodas neturi būti vadinamas sinchronizuotame kontekste.Laukimo metodas turi būti vadinamas sinchronizuotame kontekste.
BaigimasPristabdytosios veiksenos vykdymas baigiamas, kai siūlelis nutraukiamas arba pasibaigia miego metodo laikas.Palaukite metodo vykdymą, kai pranešimo () arba pranešimo () metodas nutraukiamas.
StatinisMiego metodas yra statinis metodas.Palaukimo metodas nėra statiškas, todėl jam reikia objekto, kad jį būtų galima naudoti.
VykdymasMiego metodas vykdomas dabartiniame sriegyje.Laukimo metodas įvykdomas objektui.
IšimtisNutrauktasPriėmimasNeteisėtasArgumentException, IllegalMonitorStateException, InterruptedException.

Miego metodo apibrėžimas

Miego metodas yra statinis Thread klasės metodas. Miego metodas yra naudojamas, kai gija nenori atlikti tam tikros užduoties tam tikrą laiką. Miego metodas užbaigia jo vykdymą arba pasibaigus metodo laikui, arba jį nutraukia kai kurie kiti siūlai. Baigus miego metodą, siūlelis vėl tampa įmanomas. Yra du iš miego metodo, kaip parodyta žemiau.

 viešoji statinė vietinė negaliojančio miegas (ilgas milisekundė); viešoji statinė negaliojančio miegas (ilgos milisekundės ir int nanosekundė); 

Pirmiau pateiktoje dviejose formose galite stebėti laiką, paminėtą tiek miego metodo formoje. Taip yra todėl, kad siūlai visada užima tam tikrą parametrą, nurodytą parametre. Miego metodas vykdymo metu gali būti nutrauktas bet kokiu kitu sriegiu; taigi, jis gali mesti pertraukimą. Jūs turite pasirūpinti, kad išimtis būtų tvarkoma bandymo / gaudymo bloko arba kitaip raktų raktų raktai, ji sukels kompiliavimo laiko klaidą. Miego metodas užima dabartinio objekto užraktą vykdymo metu ir neleidžia atlikti kito objekto iki jo užbaigimo.

Laukimo metodo apibrėžimas

Palaukite, yra metodas, apibrėžtas Objekto klasėje. Laukimo metodas naudojamas, kai kelios užduotys (siūlai) kovoja už tą patį šaltinį vienu metu. Laukimo metodas, kai jis naudojamas, atleidžia objekto užraktą, kuris pasinaudojo laukimo metodu. Ir suteikia galimybę kitam objektui įvykdyti, kol bus pradėtas taikyti pranešimo metodas, kuris toliau atnaujina laukimo metodu paleisto objekto užraktą. Laukimo metodas turi tokią formą.

 laukti(); laukti (ilgas milisekundė); laukti (ilgas milisekundė, int nanosekundė); 

Kaip ir pirmiau minėtose trijose laukimo metodo formose, pirmasis metodas neturi laiko parametro, o tai reiškia, kad laukimo metodo vykdymas tęsis iki pranešimo arba pranešimo visiems metodas nebus naudojamas. Kiti du metodai turi laiko parametrus. Taigi jie bus vykdomi, kol pasibaigs laikas arba iki pranešimo arba noitfyAll metodas bus naudojamas anksčiau nei laikas. Laukimo metodas gali išmesti išimtis. „IllegalArgumentException“, jei perduotas laiko argumentas yra neigiamas. „IllegalMonitorStateException“, jei dabartinis siūlelis nenaudoja išteklių. Jei pertrauktas laukimo metodas, pertraukimas nutraukiamas.

Pagrindiniai miego ir laukimo metodo skirtumai Java sistemoje

  1. Pagrindinis taškas, kuris išskiria miego ir laukimo metodą, yra tas, kad miego metodas užima objekto užraktą, kol jis pertraukiamas arba jo laikas baigiasi. Tačiau laukimo metodas atleidžia užrakto objektą, kuris jį skatina, ir suteikia kitiems objektams galimybę vykdyti.
  2. Miego metodas yra apibrėžtas temos klasėje, o laukimo metodas apibrėžtas Objektų klasėje.
  3. Miego metodas neturi būti vadinamas sinchronizuotu kontekstu. Tačiau laukimo metodas turi būti vadinamas iš sinchronizuoto.
  4. Miego metodas yra pažadintas, jei pasibaigia metodo laikas arba nutraukiamas kitas siūlas. Laukimo metodas atsibunda
    kai naudojamasi pranešimo arba pranešimo metodas.
  5. Miego metodas yra statinis metodas, o laukimo metodas nėra statinis metodas.
  6. Miego metodas vykdomas dabartiniame sriegyje, o laukimo metodas vykdomas objektą, kuris jį skatina.
  7. Miego metodu išimta išimtis yra „ InterruptedException“, o išimtis „thrwon by wait“ yra „ IllegalArgumentException“, „IllegalMonitorStateException“, „InterruptedException“ .

Išvada:

Kai norima naudoti kelis gijas vienu pačiu šaltiniu, reikia naudoti laukimo metodą. Kai siūlai nenori atlikti jokių užduočių, reikia naudoti miego metodą.

Top