Razlika između mirovanja i čekanja u Javi

Sadržaj:

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

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

Video: Razlika između mirovanja i čekanja u Javi
Video: ŽIVOTNI CIKLUS ĆELIJE I MITOZA 2024, Srpanj
Anonim

Ključna razlika – spavanje naspram čekanja u Javi

Spavanje i čekanje dvije su metode koje se koriste za višenitnost u Javi. Metoda spavanja pripada klasi Thread dok je metoda čekanja iz klase Object. Ključna razlika između stanja mirovanja i čekanja u Javi je u tome što se stanje mirovanja koristi za obustavu izvršenja 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 metoda notifyAll za objekt.

Nit je najmanja jedinica obrade u operativnom sustavu. To je jedan sekvencijalni tok kontrole unutar programa. Konci su lagani. Multithreading je mehanizam pokretanja više niti u isto vrijeme. Programski jezici kao što je Java podržavaju višenitnost. Multithreading ima prednosti jer omogućuje izvođenje više niti istovremeno, a niti su neovisne jedna o drugoj. U Javi postoje metode koje se mogu koristiti za višenitnost. Dvojica od njih spavaju i čekaju.

Što je spavanje u Javi?

Postoji više procesa koji se izvode u operativnom sustavu. Proces je program u izvođenju. Svaki proces može imati više niti, a između tih niti dolazi do promjene konteksta. U Javi postoje dva načina za stvaranje niti. To je proširenjem klase niti ili implementacijom Runnable sučelja. Klasa Thread ima konstruktore i metode za stvaranje i izvođenje operacija na niti. Klasa Thread proširuje klasu Object i implementira Runnable sučelje. Sučelje Runnable treba implementirati bilo koja klasa čije su instance namijenjene za izvršavanje niti. Kada se nit izvršava, kod koji bi se trebao izvršiti zapisuje se unutar run metode. Nit koja bi se trebala pokrenuti odabire planer 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 odabire nit za pokretanje. Ako planer niti još nije odabrao nit, ali ako je pokrenuta metoda pokretanja, tada je nit u stanju koje se može izvoditi. Nakon što planer niti odabere nit za izvršenje, ona prelazi u stanje rada. Ako je nit živa, ali trenutno nije prikladna za pokretanje, tada je u stanju koje se ne može izvoditi ili je blokirana. Nakon završetka run metode, nit prelazi u prekinuto stanje. To su glavne faze životnog ciklusa niti.

Postoje razne metode dostupne u klasi niti za obavljanje različitih zadataka. Metoda mirovanja koristi se za spavanje metode na određeno vrijeme. Sintaksa za metodu mirovanja je public void sleep (duge milisekunde) baca InterruptedException. Uzrokuje da nit koja se trenutno izvodi privremeno zaustavi izvođenje na određeni broj milisekundi. Ako druga nit prekine trenutnu nit, prekinuti status trenutne niti se briše kada se pojavi ova iznimka.

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

Slika 01: Java program s metodom mirovanja

Prema gornjem programu, metoda pokretanja sadrži kod koji bi se trebao izvršiti. U glavnom programu kreiraju se dva objekta ExampleThread1 i na njima se pozivaju metode pokretanja. To će omogućiti pokretanje koda unutar metode pokretanja. Istovremeno se izvršava samo jedna nit. S Nitom.spavanje (1000); omogućit će prvoj niti da prekine izvršenje na 1000 milisekundi. Kada nit spava, planer niti preuzima drugu nit.

Što je čekanje u Javi?

Više niti može pristupiti zajedničkom resursu. To može uzrokovati generiranje netočnog izlaza. Sinkronizacija niti se može koristiti za stvaranje samo jedne niti za pristup dijeljenom resursu. Pretpostavimo sljedeću situaciju. Ako postoje dvije niti kao t1 i t2, t1 počinje spremati vrijednosti u tekstualnu datoteku pod nazivom Text1.txt. Te vrijednosti će se koristiti za neki drugi izračun kada se t1 vrati. Ako t2 započne prije povratka t1, t2 može promijeniti vrijednosti koje je spremio t1. To može uzrokovati da t1 daje pogrešan izlaz. Uz pomoć sinkronizacije, kada t1 počne koristiti datoteku Text1.txt, ta datoteka se može zaključati, tako da je dostupna samo t1. T2 to ne može promijeniti dok t1 ne otključa pristup toj tekstualnoj datoteci. Kada je zadatak dovršen t1 može osloboditi bravu. Brava je također poznata kao monitor.

Sinkronizacija niti može se postići komunikacijom između niti. Kritični odjeljak je segment koda koji pristupa zajedničkim resursima. U komunikaciji između niti, nit se pauzira u svom kritičnom odjeljku, a drugoj je niti dozvoljeno da uđe u isti kritični odjeljak kako bi se izvršila. Implementiran je pomoću metoda čekanja, obavijesti i obavijestiSve. Pripadaju klasi Object. Metoda čekanja koristi se kako bi se trenutnoj niti omogućilo otključavanje i čekanje dok druga nit ne pozove metodu notify ili notifyAll za objekt. Metoda obavijesti koristi se za buđenje jedne niti koja čeka na zaključavanje. NotifyAll budi sve niti koje čekaju na zaključavanje.

Razlika između mirovanja i čekanja u Javi_Slika 02
Razlika između mirovanja i čekanja u Javi_Slika 02

Slika 02: Klasa kalkulatora

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

Slika 03: Glavna metoda

Klasa Kalkulator proširuje Nit. Sinkronizirani blok nalazi se unutar metode pokretanja. Petlja for i metoda obavijesti nalaze se unutar sinkroniziranog bloka. Unutar glavne metode kreirana je instanca niti i na toj se instanci poziva metoda pokretanja. Glavna metoda će čekati dok nit ne pošalje obavijest. Prilikom izvođenja programa, glavna metoda čeka do cijelog izvršenja metode run i čeka na metodu notify. Nakon što se pozove metoda notify, glavna metoda prestaje čekati i počinje izvršavati ostatak koda. Glavni čeka dok se nit kalkulatora ne završi. Na kraju se ispisuje rezultat zbroja.

Ako nema sinkroniziranog bloka i ako glavna metoda ima kod kao ispod, dat će izlaz kao nulu jer ne čeka da druga nit završi.

Kalkulator t1=novi kalkulator ();

t1. početak ();

System.out.println (t1.sum);

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

I mirovanje i čekanje metode su koje se mogu koristiti pri implementaciji višenitnosti u Javi

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

spavanje vs čekanje u Javi

Metoda mirovanja uzrokuje da trenutna nit obustavi izvršenje na određeni broj milisekundi, ovisno o preciznosti i točnosti sistemskih mjerača vremena i planera. Metoda čekanja uzrokuje da trenutna nit čeka dok druga nit ne pozove metodu notify ili notifyAll za objekt.
Povezivanje s bravom
Metoda mirovanja ne otključava objekt tijekom sinkronizacije. Metoda čekanja oslobađa zaključavanje tijekom sinkronizacije.
Metoda izvršenja
Metoda mirovanja se izvršava na trenutnoj niti. Metoda čekanja se poziva na objektu.
Pridružena klasa
Spavanje je metoda klase Thread. Čekanje je metoda klase Objekt.
Završetak
Proces spavanja je dovršen nakon isteka određenog vremena. Metoda čekanja prekida se pozivanjem metoda notify ili notifyAll.

Sažetak – spavanje naspram čekanja u Javi

Na operativnom sustavu izvodi se više procesa. Svaki proces može imati više niti. Nit je najmanja jedinica obrade u operativnom sustavu. Java programski jezik podržava višenitnost. Omogućuje pokretanje više niti istovremeno. Spavanje i čekanje dvije su metode koje se mogu koristiti pri implementaciji višenitnosti. Razlika između stanja mirovanja i čekanja u Javi je u tome što se stanje mirovanja koristi za obustavu izvršenja 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 objekt.

Preporučeni: