Preporučeno, 2024

Izbor Urednika

Razlika između načina spavanja () i čekanja () u Javi

Metoda spavanja i čekanja zvuči kao da radite isti zadatak, ali oni se mnogo razlikuju. Sleep metoda pripada klasi Thread, a metoda čekanja pripada klasi Object. Najvažnija razlika koja razlikuje oba od njih je da metoda spavanja drži bravu na objektu dok se ne prekine ili dovrši izvršenje. S druge strane, metoda čekanja oslobađa zaključavanje objekta kako bi se ostali objekti izvršili dok se ne nastavi metodom notify. Postoji još nekoliko razlika između načina spavanja i čekanja; možete ih istražiti u donjoj tablici usporedbe.

Tablica usporedbe

Osnova za usporedbuspavatičekati
Osnovni, temeljniNačin mirovanja ne oslobađa bravu na objektu dok se ne prekine.Pričekajte metodu za otpuštanje zaključavanja objekta kako bi drugi objekti mogli izvršiti do obavijesti ili je prijavljena metoda.
klasaSleep metoda je definirana u Thread class.Metoda čekanja definirana je u klasi Object.
SinkroniziranoSleep metoda ne mora biti pozvana unutar sinkroniziranog konteksta.Metoda čekanja mora biti pozvana unutar sinkroniziranog konteksta.
ZavršetakIzvršavanje metode spavanja završava se kada ga prekine nit ili je isteklo vrijeme spavanja.Pričekajte izvršenje metode dovršeno je kada je notify () ili notifyAll () metoda prekine.
StatičkiSleep metoda je statička metoda.Metoda čekanja nije statična i zato je potrebno objekt da je pozove.
IzvršenjeMetoda spavanja izvršava se na trenutnoj niti.Metoda čekanja izvršava se na objektu.
izuzetakInterruptedExceptionIllegalArgumentException, IllegalMonitorStateException, InterruptedException.

Definicija metode mirovanja

Metoda spavanja je statička metoda klase Thread . Metoda spavanja se poziva kad nit ne želi izvesti neki zadatak određeno vrijeme. Metoda spavanja dovršava izvršenje bilo kada je isteklo vrijeme metode, ili je prekinuto nekom drugom niti u izvršenju. Nakon što je metoda spavanja dovršena, nit ponovno dobiva status izvršivosti. Postoje dvije metode spavanja kao što je prikazano u nastavku.

 javni statički native void sleep (dugo milisekunda); javni statički prazan san (duge milisekunde i int nanosekunde); 

U gore navedenom obliku možete promatrati vrijeme koje se spominje u oba oblika spavanja. To je zato što nit uvijek spava određeno vrijeme spomenuto u parametru. Metoda spavanja može biti prekinuta bilo kojom drugom niti tijekom izvršenja; stoga može baciti InterruptedExecption. Morate paziti da se iznimka rješava bilo probnim / catch blokom ili Throws ključnim riječima u suprotnom slučaju, to će dovesti do pogreške kompiliranja. Metoda spavanja drži zaključavanje trenutnog objekta u izvršenju i ne dopušta izvršavanje bilo kojeg drugog objekta dok se ne dovrši njegovo izvršenje.

Definicija metode čekanja

Wait je metoda definirana u klasi Object . Metoda čekanja koristi se kada se nekoliko zadataka (niti) bori za isti resurs jedan po jedan. Metoda čekanja kada je pozvana oslobađa zaključavanje na objektu koji je pokrenuo metodu čekanja. I pružiti šansu drugom objektu da se izvrši dok se ne pozove metoda naznači koja dalje nastavlja zaključavanje na objektu koji se izdaje metodom čekanja. Metoda čekanja ima sljedeći oblik.

 čekati(); čekati (duga milisekunda); čekanje (duga milisekunda, int nanosekunda); 

Kao u gornja tri oblika metode čekanja, prva metoda nema vremenski parametar, što znači da će izvođenje metode čekanja trajati sve dok se ne pozove metoda notify ili notifyAll. Ostala dva načina imaju vremenske parametre. Tako će se izvršiti dok vrijeme ne istekne ili dok se obavijesti ili noitfyAll metoda ne pozove ranije nego što istekne vrijeme. Metoda čekanja može bacati iznimke. IllegalArgumentException, ako je vremenski argument prošao negativan. IllegalMonitorStateException, ako trenutna nit ne koristi resurs. InterruptedException, ako je metoda čekanja prekinuta.

Ključne razlike između načina mirovanja i načina čekanja u Javi

  1. Glavna točka koja razlikuje metodu spavanja i čekanja je ta da način spavanja drži bravu na objektu dok se ne prekine ili mu istekne vrijeme. Međutim, metoda čekanja oslobađa zaključavanje na objektu koji ga poziva i daje drugim objektima priliku za izvršavanje.
  2. Metoda spavanja definirana je u klasi Thread dok je metoda čekanja definirana u klasi Object .
  3. Metoda spavanja ne mora biti pozvana iz sinkroniziranog konteksta. No, metoda čekanja mora biti pozvana iz sinkronizirane.
  4. Metoda spavanja se probudi ako je vrijeme metode isteklo ili je prekinuto drugim nitima. Metoda čekanja se probudi
    kada je pozvana metoda notify ili notify All.
  5. Metoda spavanja je statična metoda, dok metoda čekanja nije statička metoda.
  6. Metoda spavanja izvršava se na trenutnom nizu, dok se metoda čekanja izvršava na objektu koji ga pokreće.
  7. Iznimka koju je bacila metoda spavanja je InterruptedException, dok su iznimke thrwon po čekanju metoda IllegalArgumentException, IllegalMonitorStateException, InterruptedException .

Zaključak:

Kada više niti želi koristiti isti resurs jedan po jedan, tada se mora koristiti metoda čekanja. Kada nit ne želi izvesti neki zadatak, tada se mora koristiti metoda spavanja.

Top