Razlika između spavanja i čekanja u Javi

Sadržaj:

Razlika između spavanja i čekanja u Javi
Razlika između spavanja i čekanja u Javi

Video: Razlika između spavanja i čekanja u Javi

Video: Razlika između spavanja i čekanja u Javi
Video: Константа равнотеже 1. део 2024, Juli
Anonim

Ključna razlika – spavanje u odnosu na čekanje u Javi

Sleep and wait su dvije metode koje se koriste za multithreading u Javi. Metoda spavanja pripada klasi Thread dok je metoda čekanja iz klase Object. Ključna razlika između spavanja i čekanja u Javi je u tome što se stanje mirovanja koristi za suspendovanje izvršavanja trenutne niti na određeni broj milisekundi, dok se metoda čekanja koristi da izazove trenutnu nit da čeka dok druga nit ne pozove notify ili notifyAll metoda za objekat.

Nit je najmanja jedinica za obradu u operativnom sistemu. To je jedan sekvencijalni tok kontrole unutar programa. Niti su lagani. Multithreading je mehanizam pokretanja više niti u isto vrijeme. Programski jezici kao što je Java podržavaju multithreading. Multithreading ima prednosti jer omogućava pokretanje više niti istovremeno, a niti su nezavisne jedna od druge. U Javi postoje metode koje se mogu koristiti za višenitnost. Dva od njih spavaju i čekaju.

Šta je spavanje u Javi?

U operativnom sistemu radi više procesa. Proces je program koji se izvršava. Svaki proces može imati više niti, a između ovih niti dolazi do promjene konteksta. U Javi postoje dva načina za kreiranje niti. To je proširenjem klase niti ili implementacijom Runnable interfejsa. Klasa Thread ima konstruktore i metode za kreiranje i izvođenje operacija na niti. Klasa Thread proširuje klasu Object i implementira Runnable interfejs. Runnable sučelje treba implementirati od strane bilo koje klase čije instance su namijenjene da se izvršavaju od strane niti. Kada se nit izvrši, kod koji treba da se izvrši je napisan unutar metode run. Nit koja bi se trebala pokrenuti je odabrana od strane planera niti. Samo jedna nit radi u jednom procesu.

Nit prolazi kroz nekoliko faza. Nakon kreiranja objekta klase Thread, programer može pozvati start metodu. Prije pozivanja te metode, kaže se da je nit u novom stanju. Planer niti bira nit za pokretanje. Ako nit još nije odabrana od strane planera niti, ali ako je pokrenuta metoda, tada je nit u stanju izvođenja. Nakon što planer niti odabere nit za izvršenje, ona prelazi u stanje rada. Ako je nit živa, ali trenutno nije podobna za pokretanje, tada je u stanju koje nije moguće pokrenuti ili je blokirano. Nakon završetka metode run, nit ide u prekinuto stanje. To su glavne faze životnog ciklusa niti.

Postoje različite metode dostupne u klasi niti za obavljanje različitih zadataka. Metoda spavanja se koristi za spavanje metode određeno vrijeme. Sintaksa za metodu spavanja je javna praznina spavanja (duge milisekunde) izbacuje InterruptedException. To uzrokuje da trenutno izvršava nit privremeno zaustavi izvršenje na određeni broj milisekundi. Ako druga nit prekine trenutnu nit, prekinuti status trenutne niti se briše kada se izbaci ovaj izuzetak.

Razlika između spavanja i čekanja u Javi
Razlika između spavanja i čekanja u Javi

Slika 01: Java program sa metodom spavanja

Prema gore navedenom programu, metoda run sadrži kod koji treba izvršiti. U glavnom programu kreiraju se dva objekta ExampleThread1 i na njima se pozivaju startne metode. To će omogućiti pokretanje koda unutar run metode. Samo jedna nit se izvršava istovremeno. Sa temom.spavanje (1000); će dozvoliti prvoj niti da prekine izvršenje na 1000 milisekundi. Kada nit spava, planer niti preuzima drugu nit.

Šta je čekanje u Javi?

Više niti može pristupiti dijeljenom resursu. To može uzrokovati generiranje pogrešnog izlaza. Sinhronizacija niti se može koristiti da bi samo jedna nit pristupila dijeljenom resursu. Pretpostavite situaciju kako slijedi. Ako postoje dvije niti kao t1 i t2, t1 počinje da sprema vrijednosti u tekstualnu datoteku koja se zove Text1.txt. Te vrijednosti će se koristiti za neki drugi proračun kada se vrati t1. Ako t2 počne prije nego što se t1 vrati, t2 može promijeniti vrijednosti koje je sačuvao t1. Ovo može uzrokovati da t1 pruži pogrešan izlaz. Uz pomoć sinhronizacije, kada t1 počne da koristi datoteku Text1.txt, ta datoteka se može zaključati, tako da joj može pristupiti samo t1. t2 ga ne može promijeniti sve dok t1 ne otpusti zaključavanje za pristup toj tekstualnoj datoteci. Kada je zadatak završen, t1 može otpustiti bravu. Brava je poznata i kao monitor.

Sinhronizacija niti se može postići komunikacijom između niti. Kritična sekcija je segment koda koji pristupa zajedničkim resursima. U komunikaciji između niti, nit je pauzirana u svom kritičnom dijelu, a drugoj niti je dozvoljeno da uđe u isti kritični dio da bi se izvršio. Implementira se korištenjem metoda čekanja, obavijesti i notifyAll. Oni pripadaju klasi Object. Metoda čekanja se koristi da omogući trenutnoj niti da otpusti zaključavanje i čeka dok druga nit ne pozove metodu notify ili notifyAll za objekt. Metoda obavijesti se koristi za buđenje jedne niti koja čeka na zaključavanje. NotifyAll budi sve niti koje čekaju na zaključavanje.

Razlika između spavanja i čekanja na Javi_slika 02
Razlika između spavanja i čekanja na Javi_slika 02

Slika 02: Klasa kalkulatora

Ključna razlika između spavanja i čekanja u Javi
Ključna razlika između spavanja i čekanja u Javi

Slika 03: Glavni metod

Klasa Calculator proširuje Nit. Sinhronizirani blok je unutar metode run. Metoda for petlje i notify je unutar sinhronizovanog bloka. Unutar glavne metode, stvorena instanca niti i start metoda se poziva na toj instanci. Glavna metoda će čekati dok nit ne da obavijest. Prilikom izvršavanja programa, glavna metoda čeka do cjelokupnog izvršenja run metode i čeka metodu obavijesti. Jednom kada se pozove metoda notify, glavna metoda prestaje čekati i počinje izvršavati ostatak koda. Main čeka dok se nit Kalkulatora ne završi. Na kraju se ispisuje rezultat sume.

Ako nema sinhronizovanog bloka i ako glavna metoda ima kod kao što je dole, to će dati izlaz kao nulu jer ne čeka da se druga nit završi.

Kalkulator t1=novi kalkulator ();

t1. početak ();

System.out.println (t1.sum);

Koja je sličnost između spavanja i čekanja u Javi?

I spavanje i čekanje su metode koje se mogu koristiti prilikom implementacije višenitnog rada u Javi

Koja je razlika između spavanja i čekanja u Javi?

spavanje vs čekanje u Javi

Metoda spavanja uzrokuje da trenutna nit obustavi izvršenje na određeni broj milisekundi, u zavisnosti od preciznosti i tačnosti sistemskih tajmera i planera. Metoda čekanja uzrokuje da trenutna nit čeka dok druga nit ne pozove metodu notify ili notifyAll za objekat.
Povezivanje sa zaključavanjem
Metoda spavanja ne otpušta zaključavanje objekta tokom sinhronizacije. Način čekanja otpušta zaključavanje tokom sinhronizacije.
Metoda izvršenja
Metoda spavanja se izvršava na trenutnoj niti. Na objektu se poziva metoda čekanja.
Pridružena klasa
Spavanje je metoda Thread klase. Čekanje je metoda klase Object.
Završetak
Proces spavanja je završen nakon isteka određenog vremena. Metoda čekanja je prekinuta pozivanjem metoda notify ili notifyAll.

Sažetak – spavanje vs čekanje u Javi

Na operativnom sistemu radi više procesa. Svaki proces može imati više niti. Nit je najmanja jedinica za obradu u operativnom sistemu. Java programski jezik podržava višenitnost. Omogućava pokretanje više niti istovremeno. Spavanje i čekanje su dvije metode koje se mogu koristiti kada se implementira multi-threading. Razlika između spavanja i čekanja u Javi je u tome što se spavanje koristi za suspendovanje izvršavanja trenutne niti za određeni broj milisekundi, dok se metoda čekanja koristi da izazove trenutnu nit da čeka dok druga nit ne pozove notify ili notifyAll metoda za objekt.

Preporučuje se: