Što je Wait and Notify u Javi?



Wait i Notify u Javi dvije su posljednje metode koje nitima omogućuju međusobnu komunikaciju. Ovaj će vam članak pomoći u pojedinostima

Značajka u Javi omogućuje istodobno izvršavanje dva ili više dijelova programa. Svaki dio je nit. Te niti često moraju koordinirati svoje akcije. To se radi pomoću nekoliko završnih metoda poput Wait and Notify u Javi. Ovaj članak pomoći će vam da detaljno razumijete ove metode.

O temama ću raspravljati sljedećim redoslijedom:





Započnimo!

Što je sinkronizacija niti?

Programi s više niti mogu redovito dolaziti u situaciju da višestruki pokušati doći do istog resursa koji daje lažne i zapanjujuće ishode. Ponekad više od jedne niti može pokušati pristupiti zajedničkom resursu, morate osigurati da će resurs istodobno koristiti samo jedna nit. To se može učiniti pomoću Sinkronizacija u Javi.



Sad govorimo o anketiranju. Anketa je postupak višekratnog testiranja stanja dok nije istinito. Ova se metoda provodi uz pomoć kako bi provjerili je li određeni uvjet istinit ili ne. Ovu metodu možete koristiti za niti, ali ona također troši puno CPU ciklusa čini postupak provedbe vrlo neučinkovitim. Da bi se izbjegle ove vrste bugova, uvode se metode poput Wait i Notify u Javi.

Što su metode Wait () i Notify ()?

Za rješavanje problema s višestrukim nitima, metode poput Wait and Notify in su korišteni. Klasa Object koristi ove tri završne metode koje omogućuju nitima da komuniciraju o zaključanom statusu resursa. Oni se također nazivaju i Čuvanim blokovima.

pl sql tutorial s primjerima

Čekati()

Ova metoda dovodi do toga da nit čeka dok druga nit ne pozove metode notify () i notifyAll () za ovaj objekt. Ova metoda Wait () govori pozivajućoj niti da pusti bravu i pređe u stanje spavanja dok neka druga nit ne uđe na isti monitor i ne pozove obavijestiti (). Ova metoda otpušta bravu prije čekanja i ponovno je dobiva prije vraćanja iz metode wait ().



Metoda Wait () čvrsto je integrirana s zaključavanjem sinkronizacije. To se postiže korištenjem značajke koja nije dostupna izravno iz mehanizma sinkronizacije.

Sintaksa:

sinkronizirano (lockObject) {while (! condition) {lockObject.wait ()} // ovdje poduzmite radnju}

Trenutačna nit mora posjedovati monitor svog objekta. Mora se pozivati ​​samo iz sinkronizirane metode, inače će izbaciti iznimku.

Obavijestiti()

Ova se metoda koristi za obavještavanje da treba funkcionirati. Budi jednu nit koja se zvala čekati() metoda na istom objektu.

Imajte na umu da pozivanje obavijestiti() na kraju se ne odriče brave. Kaže niti koja čeka da se može probuditi. Međutim, zaključavanja se zapravo ne odustaje dok se sinkronizirani blok obavijesti ne dovrši. Sad recite, ako nazovete obavijestiti() na resursu, ali obavijestnik još uvijek treba izvršiti radnje tijekom 10 sekundi unutar svog sinkroniziranog bloka, nit koja je čekala morat će pričekati najmanje dodatnih 10 sekundi da obavijest otpusti zaključavanje na objektu, iako obavijesti () bio je pozvan.

Sintaksa:

sinkronizirano (lockObject) {// uspostaviti_uslov lockObject.notify () // bilo koji dodatni kod ako je potrebno}

Obavijesti sve ()

Ova se metoda koristi za buđenje svih niti koje su na istom objektu pozvale wait (). Nit s najvišim prioritetom prvo će se pokrenuti u većini slučajeva iako nije zajamčena. Ostale su stvari iste kao metoda notify ().

Zašto i kako koristiti Wait () i Notify () u Javi?

Trebali biste koristiti Pričekajte i Obavijesti u jer su povezani sa bravom i objekt ima bravu. Iako su čekanje i obavještavanje u Javi prilično temeljni pojam, oni su definirani u klasa predmeta . Iznenađujuće, nije tako lako napisati kod pomoću čekanja i obavijesti. To možete testirati pisanjem koda kako biste riješili problem proizvođača i potrošača pomoću čekanja i obavijesti. Primjer potrošača proizvođača - pričekajte i obavijestite u Java-EdurekiEvo, imam zajedničko Red idvije nitipozvao Proizvođač i Potrošač . Proizvođač nit stavlja broj u zajednički red i Potrošač nit troši brojeve iz zajedničkog segmenta.

Uvjet je da nakon što je proizvod proizveden, potrošačka nit mora biti prijavljena, a slično, nakon što je potrebno prijaviti potrošačku nit. Ova inter-nitkomunikacijapostiže se korištenjem wait and notify u Javi.

Bilješka : W.ait i Nemetode tify definirane su u klasi objekta, i oni se moraju pozivati ​​unutar sinkroniziranog bloka.

Primjer

javna klasa Thread1 {public static void main (String [] args) {Thread2 b = new Thread2 () b.start () sinkronizirano (b) {try {System.out.println ('Čekanje da se završe 2 ...' ) b.wait ()} catch (InterruptedException e) {e.printStackTrace ()} System.out.println ('Ukupno je:' + b.total)}}} klasa Thread2 produžuje Thread1 {int total @Override public void run () {sinkronizirano (ovo) {za (int i = 0 i<=100 i++) { total += i } notify() }}}

Primijetite da je u gornjem primjeru objekt Thread2, to jest b, sinkroniziran. Ovim b završava izračun prije nego što glavna nit iznese svoju ukupnu vrijednost.

Izlaz:

Ovo nas dovodi do kraja ovog članka gdje smo naučili na Wait and Notify u Javi.Nadam se da se gore navedeni sadržaj pokazao korisnim za poboljšanje vašeg znanje. Nastavite čitati, istražujte!

Također pogledajte Edureka, pouzdane tvrtke za internetsko učenje s mrežom od više od 250 000 zadovoljnih učenika raširenih širom svijeta. Edurekin tečaj za obuku i certificiranje Java J2EE i SOA dizajniran je za studente i profesionalce koji žele biti programer Java. Tečaj je osmišljen kako bi vam pružio prednost u programiranju Java-a i osposobio vas za osnovne i napredne Java koncepte, zajedno s raznim poput Hibernate & Spring.