Razlika između spavanja i čekanja na Javi

Ključna razlika - spavanje u odnosu na čekanje Java
 

Mirovanje i čekanje dvije su metode koje se koriste za multithreading na Javi. Metoda mirovanja pripada klasi Thread dok je metoda čekanja iz klase Object. ključna razlika između spavanja i čekanja na Javi je to, the mirovanje koristi se za obustavljanje izvršenja trenutne niti za određeni broj milisekundi, dok se metoda čekanja upotrebljava da trenutni nit dočeka dok drugi nit poziva objekt notify or notifyAll za objekt.

Konac je najmanja jedinica obrade u operativnom sustavu. To je jedan uzastopni tijek kontrole unutar programa. Niti su lagane. Multithreading je mehanizam pokretanja više niti istovremeno. Programski jezici kao što je Java podržava multithreading. Multithreading ima prednosti jer omogućava pokretanje više niti istovremeno, a niti su neovisne jedna o drugoj. U Javi postoje metode koje se mogu koristiti za multithreading. Njih dvoje spavaju i čekaju.

SADRŽAJ

1. Pregled i ključne razlike
2. Što je spavanje u Javi
3. Što se čeka u Javi
4. Sličnosti između spavanja i čekanja na Javi
5. Usporedna usporedba - spavanje i čekanje na Javi u tabličnom obliku
6. Sažetak

Što je spavanje u Javi?

U operativnom sustavu radi više procesa. Proces je program u izvođenju. Svaki proces može imati više niti, a među njima se događa kontekstna promjena. U Javi postoje dva načina stvaranja niti. To je proširivanjem klase niti ili primjenom Runnable sučelja. Klasa Thread ima konstruktore i metode za stvaranje i izvođenje operacija na niti. Klasa Thread proširuje klasu Objekta i implementira Runnable sučelje. Sučelje Runnable trebala bi implementirati bilo koja klasa čije instance trebaju biti izvedene nitom. Kad se nit izvrši, kod koji treba izvršiti piše se u metodi izvođenja. Konac koji bi se trebao pokrenuti odabire planer niti. Samo jedan konac teče u jednom procesu.

Konac prolazi kroz nekoliko faza. Nakon kreiranja objekta klase Thread, programer može pozvati metodu pokretanja. Prije pozivanja te metode, kaže se da se nit nalazi u novom stanju. Planer niti bira nit koji će se pokrenuti. Ako nit još nije izabran od strane planera niti, ali ako se poziva metoda pokretanja, nit se nalazi u stanju za pokretanje. Nakon što alat za planiranje niti odabere nit za izvršenje, prelazi u stanje rada. Ako je nit živa, ali trenutno nije prikladna za pokretanje, tada se ne može pokrenuti ili je blokirana. Nakon dovršetka metode izvođenja, nit ide u zaustavljeno stanje. To su glavne faze životnog ciklusa niti.

U klasi niti su dostupne razne metode za izvršavanje različitih zadataka. Metoda spavanja koristi se za uspavljivanje metode određeno vrijeme. Sintaksa za način spavanja javno nevaljano spavanje (duge milisekunde) izbacuje InterruptedException. To uzrokuje trenutačno izvršavanje niti da zaustavi izvršenje privremeno za određeni broj milisekundi. Ako drugi nit prekida trenutačni nit, prekida se status trenutne niti nakon uklanjanja ove iznimke.

Slika 01: Java program s načinom mirovanja

Prema gornjem programu, metoda pokretanja sadrži kôd koji treba izvršiti. U glavnom programu stvaraju se dva objekta ExampleThread1 i na njih se pozivaju metode pokretanja. To će omogućiti pokretanje koda unutar metode pokretanja. Istodobno se izvršava samo jedna nit. S nitom. spavati (1000); omogućit će da prva nit prekine izvršenje u trajanju od 1000 milisekundi. Kad nit spava, alat za planiranje niti hvata drugu nit.

Što se čeka u Javi?

Više niti može pristupiti zajedničkom resursu. To može uzrokovati stvaranje pogrešnog izlaza. Sinkronizacija niti može se koristiti za stvaranje samo jedne niti za pristup zajedničkom resursu. Pretpostavimo situaciju na sljedeći način. Ako postoje dvije niti kao t1 i t2, t1 započinju spremanje vrijednosti u tekstualnu datoteku zvanu Text1.txt. Te će se vrijednosti koristiti za neki drugi izračun kad se vrati t1. Ako t2 započne prije nego što se t1 vrati, t2 može promijeniti vrijednosti spremljene pomoću t1. To može uzrokovati da t1 osigura pogrešan izlaz. Uz pomoć sinkronizacije, kada t1 započne koristiti Text1.txt datoteku, ta se datoteka može zaključati, pa joj je dostupna samo t1. T2 ne može je promijeniti dok t1 ne oslobodi bravu za pristup toj datoteci teksta. Kada je zadatak završen, t1 može otpustiti bravu. Brava je poznata i kao monitor.

Sinkronizacija navoja može se postići komunikacijom između niti. Kritični dio je segment koda koji pristupa zajedničkim resursima. U komunikaciji između niti, nit se zaustavlja i pokreće se u svom kritičnom odjeljku, a drugi se niz dopušta da uđe u isti kritični odjeljak koji se izvršava. Provodi se pomoću metoda čekanja, obavijesti i notifikacijeSve. Pripadaju klasi Objekt. Metoda čekanja koristi se kako bi se trenutni nit omogućio oslobađanje zaključavanja i čekao dok druga nit poziva metodu obavijesti ili notifyAll za objekt. Metoda prijavljivanja koristi se za buđenje jedne niti koja čeka na zaključavanje. Obavijesti budi sve niti koje čekaju na zaključavanje.

Slika 02: Klasa kalkulatora

Slika 03: Glavna metoda

Klasa Kalkulator proširuje nit. Sinkronizirani blok nalazi se unutar metode pokretanja. Metoda za petlju i obavijest nalazi se unutar sinkroniziranog bloka. Unutar glavne metode, instanca niti kreirana i metoda starta se poziva na toj instanci. Glavna metoda će pričekati dok nit ne objavi obavijest. Prilikom izvođenja programa glavna metoda čeka sveukupno izvršavanje metode pokretanja i čeka metodu obavijesti. Jednom kada se nazove metoda obavijesti, glavna metoda prestaje čekati i započinje s izvršavanjem ostatka koda. Main čeka dok se ne popuni nit kalkulatora. Na kraju se ispisuje rezultat.

Ako ne postoji sinkronizirani blok i ako glavna metoda ima kod kao što je dolje, dat će izlaz kao nula jer ne čeka da se druga nit dovrši.

Kalkulator t1 = novi Kalkulator ();

 t1. početak ();

System.out.println (t1.sum);

Koja je sličnost spavanja i čekanja na Javi?

  • I spavanje i čekanje su metode koje se mogu primijeniti kod implementacije višesatnog čitanja u Javi

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

spavati vs čekati u Javi

Metoda mirovanja uzrokuje da trenutna nit zaustavi izvršenje određenog broja milisekundi, ovisno o preciznosti i točnosti programatora i planera sustava. Metoda čekanja uzrokuje da trenutna nit čeka dok druga nit poziva metodu notify ili notifyAll za objekt.
 Druženje s Lockom
Metoda mirovanja ne oslobađa zaključavanje na objektu tijekom sinkronizacije. Način čekanja oslobađa zaključavanje tijekom sinkronizacije.
Način izvršenja
Metoda mirovanja izvodi se na trenutnoj niti. Na objektu se poziva metoda čekanja.
 Pridružena klasa
Spavanje je metoda klase niti. Čekanje je metoda klase objekata.
Završetak
Postupak spavanja dovršava se nakon određenog vremena. Način čekanja prekida se pozivanjem načina notifikacije ili notifyAll.

Sažetak - spavati vs čekati unutra Java

U operativnom sustavu radi više procesa. Svaki postupak može imati više niti. Konac je najmanja jedinica obrade u operativnom sustavu. Java programski jezik podržava multithreading. Omogućuje istovremeno pokretanje više niti. Spavanje i čekanje dvije su metode koje se mogu primijeniti kod provođenja višestrukih navoja. Razlika između načina spavanja i čekanja u Javi je ta što se stanje mirovanja koristi za obustavljanje izvršenja trenutne niti za određeni broj milisekundi, dok se metoda čekanja upotrebljava da trenutni konac pričeka dok drugi nit pozove notify ili notifyAll metoda za objekt.

Referenca:

1. "Komunikacija između navoja u Javi - Javatpoint.". JavaTPoint. Dostupno ovdje
2. Interna nit Komunikacija u Javi Multithreading | Osnovni Java Vodič | Studytonight. Dostupno ovdje