Ključna razlika - spavanje protiv čekanja na Javi
Spavanje i čekanje dvije su metode koje se koriste za multithreading u Javi. Metoda spavanja pripada klasi Thread dok je metoda wait iz klase Object. Ključna razlika između mirovanja i čekanja u Javi je u tome što se mirovanje koristi za zaustavljanje izvršavanja trenutne niti na zadati broj milisekundi, dok se metoda čekanja koristi da bi trenutna nit čekala dok druga nit ne pozove obavijest ili notifyAll metoda za objekt.
Nit je najmanja jedinica obrade u operacijskom sustavu. To je jedan sekvencijalni tok kontrole unutar programa. Navoji su lagani. Višenitnost je mehanizam istodobnog pokretanja više niti. Programski jezici kao što je Java podržavaju višestruko obrađivanje niti. Višenitnost ima prednosti jer omogućuje istodobno pokretanje više niti, a niti su međusobno neovisne. U Javi postoje metode koje se mogu koristiti za višestruko obrađivanje niti. Dvoje od njih spavaju i čekaju.
SADRŽAJ
1. Pregled i razlika u ključu
2. Što je spavanje u Javi
3. Što je čekanje u Javi
4. Sličnosti između mirovanja i čekanja u Javi
5. Usporedna usporedba - spavanje i čekanje u Javi u tabličnom obliku
6. Sažetak
Što je spavanje u Javi?
U operativnom sustavu se izvodi više procesa. Proces je program u izvršenju. Svaki postupak može imati više niti, a između tih niti događa se prebacivanje konteksta. U Javi postoje dva načina za stvaranje niti. To je proširivanjem 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. Izvodljivo sučelje trebala bi implementirati bilo koja klasa čije instance trebaju biti izvedene pomoću niti. Kada se nit izvrši, kôd koji bi se trebao izvršiti zapisan je unutar metode izvođenja. Nit koja bi se trebala pokrenuti odabire planer niti. U jednom procesu radi samo jedna nit.
Konac prolazi kroz nekoliko faza. Nakon stvaranja objekta klase Thread, programer može pozvati metodu pokretanja. Prije pozivanja te metode kaže se da je nit u novom stanju. Planer niti odabire nit koju će se pokrenuti. Ako nit nije još odabran od strane planera niti, ali ako je pozvana metoda pokretanja, nit je u stanju pokrenuti. Nakon što alat za planiranje niti odabere nit za izvršenje, ona prelazi u pokrenuto stanje. Ako je nit živa, ali trenutno ne ispunjava uvjete za pokretanje, tada je u stanju da se ne može pokrenuti ili je blokirana. Nakon završetka metode izvođenja nit prelazi u završeno stanje. To su glavne faze životnog ciklusa niti.
Postoje razne metode dostupne u klasi niti za izvođenje različitih zadataka. Metoda spavanja koristi se za spavanje metode određeno vrijeme. Sintaksa metode mirovanja je javno prazno spavanje (duge milisekunde) koje baca InterruptedException. Uzrokuje trenutno izvršnu nit da privremeno zaustavi izvršavanje na određeni broj milisekundi. Ako druga nit prekine trenutnu nit, prekinut status trenutne niti uklanja se kada se izuzme ta iznimka.
Slika 01: Java program s metodom spavanja
Prema gornjem programu, metoda izvođenja sadrži kôd koji treba izvršiti. U glavnom programu kreiraju se dva objekta ExampleThread1 i na njih se pozivaju metode pokretanja. To će omogućiti pokretanje koda unutar metode izvođenja. Istodobno se izvršava samo jedna nit. S Navojem. 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 dovesti do stvaranja netočnih rezultata. Sinkronizacija niti može se koristiti za izradu samo jedne niti za pristup zajedničkom resursu. Pretpostavimo situaciju kako slijedi. Ako postoje dvije niti kao t1 i t2, t1 započinju spremati vrijednosti u tekstualnu datoteku koja se naziva Text1.txt. Te će se vrijednosti koristiti za neki drugi izračun kada se vrati t1. Ako t2 započne prije nego što se vrati t1, t2 može promijeniti vrijednosti spremljene t1. To može uzrokovati da t1 daje pogrešan izlaz. Uz pomoć sinkronizacije, kada t1 počne koristiti datoteku Text1.txt, ta se datoteka može zaključati, pa joj je dostupan samo t1. T2 ga ne može promijeniti dok t1 ne otpusti bravu za pristup toj tekstualnoj datoteci. Kada je zadatak dovršen, t1 može otpustiti bravu. Brava je također poznata i kao monitor.
Sinkronizacija niti može se postići međusobnom komunikacijom. Kritični odjeljak je segment koda koji pristupa zajedničkim resursima. U komunikaciji među nitima nit je zaustavljena u svom kritičnom odjeljku, a drugoj niti je dopušteno ući u isti kritični odjeljak koji treba izvršiti. Provodi se metodama wait, notify i notifyAll. Pripadaju klasi Objekt. Metoda čekanja koristi se da trenutna nit otpusti bravu i pričeka dok druga nit ne pozove metodu notify ili notifyAll za objekt. Način obavijesti koristi se za buđenje jedne niti koja čeka zaključavanje. NotifyAll budi sve niti koje čekaju na zaključavanju.
Slika 02: Klasa kalkulatora
Slika 03: Glavna metoda
Klasa Kalkulator proširuje nit. Sinkronizirani blok nalazi se unutar metode izvođenja. Način for loop i notify nalazi se unutar sinkroniziranog bloka. Unutar glavne metode na toj se instanci poziva instanca niti koja je stvorena i metoda pokretanja. Glavna metoda će pričekati dok nit ne pošalje obavijest. Prilikom izvršavanja programa, glavna metoda čeka do cjelokupnog izvršenja metode izvođenja i čeka metodu obavijesti. Jednom kada se pozove metoda notify, glavna metoda prestaje čekati i započinje izvršavanje ostatka koda. Glavni čeka dok se nit kalkulatora ne dovrši. Konačno, ispisuje se rezultat zbroja.
Ako nema sinkroniziranog bloka i ako glavna metoda ima kôd kao u nastavku, dat će izlaz kao nulu jer ne čeka da se završi druga nit.
Kalkulator t1 = novi kalkulator ();
t1. početak ();
System.out.println (t1.sum);
Koja je sličnost između spavanja i čekanja u Javi?
I mirovanje i čekanje metode su koje se mogu koristiti prilikom implementacije višestrukih niti u Javi
Koja je razlika između spavanja i čekanja u Javi?
Diff Article Sredina prije tablice
sleep vs wait u Javi |
|
Metoda mirovanja uzrokuje da trenutna nit obustavi izvršenje na navedeni broj milisekundi, ovisno o preciznosti i točnosti sistemskih tajmera i planera. | Metoda čekanja uzrokuje da trenutna nit čeka dok druga nit ne pozove metodu notify ili notifyAll za objekt. |
Udruženje s Lockom | |
Metoda mirovanja ne oslobađa bravu na objektu tijekom sinkronizacije. | Način čekanja otpušta zaključavanje tijekom sinkronizacije. |
Način izvršenja | |
Metoda mirovanja izvršava se na trenutnoj niti. | Na objektu se poziva metoda čekanja. |
Pridruženi razred | |
Spavanje je metoda klase Thread. | Čekanje je metoda klase Objekt. |
Završetak | |
Proces spavanja dovršen je nakon što završi određeno vrijeme. | Način čekanja prekida se pozivanjem metoda notify ili notifyAll. |
Sažetak - spavanje vs čekanje u Javi
U operacijskom sustavu izvodi se više procesa. Svaki postupak može imati više niti. Nit je najmanja jedinica obrade u operacijskom sustavu. Java programski jezik podržava multithreading. Omogućuje istodobno pokretanje više niti. Spavanje i čekanje dvije su metode koje se mogu koristiti pri implementaciji višestrukih navoja. Razlika između mirovanja i čekanja u Javi je u tome što se mirovanje koristi za zaustavljanje izvršavanja trenutne niti na navedeni broj milisekundi, dok se metoda čekanja koristi da bi trenutna nit čekala dok druga nit ne pozove notify or notifyAll metoda za objekt.