Kaj je čakanje in obveščanje v Javi?



Wait in Notify v Javi sta zadnji dve metodi, ki omogočata niti, da komunicirata med seboj. Ta članek vam bo pomagal pri podrobnostih

funkcija v Javi omogoča sočasno izvajanje dveh ali več delov programa. Vsak del je nit. Te niti morajo pogosto usklajevati svoja dejanja. To se naredi z nekaj končnimi metodami, kot sta Wait in Notify v Javi. Ta članek vam bo pomagal podrobno razumeti te metode.

O temah bom razpravljal v naslednjem vrstnem redu:





Začnimo!

Kaj je sinhronizacija niti?

Programi z več navoji se lahko redno pojavljajo v primeru, da jih je več poskusiti priti do istega vira, ki daje lažne in osupljive rezultate. Včasih lahko več virov poskuša dostopati do vira v skupni rabi, morate zagotoviti, da bo vir hkrati uporabljala samo ena nit. To lahko storite z uporabo Sinhronizacija v Javi.



Zdaj govorimo o anketiranju. Glasovanje je postopek večkratnega preizkušanja stanja, dokler ni resnično. Ta metoda se izvaja s pomočjo preveriti, ali je določen pogoj resničen ali ne. To metodo lahko uporabite za niti, vendar ta metoda zapravi veliko procesorskih ciklov naredi postopek izvajanja zelo neučinkovit. Da bi se izognili tovrstnim napakam, so predstavljene metode, kot sta Wait in Notify v Javi.

Kaj sta metodi Wait () in Notify ()?

Za reševanje problema večnitnosti uporabljajo metode, kot sta Wait and Notify in so uporabljeni. Razred Object uporablja te tri končne metode, ki omogočajo niti, da sporočajo o zaklenjenem stanju vira. Imenovani so tudi kot varovani bloki.

kako iskati znak v javi -

Počakaj ()

Ta metoda povzroči, da nit počaka, dokler druga nit ne prikliče načinov notify () in notifyAll () za ta objekt. Ta metoda Wait () pove klicni niti, naj sprosti ključavnico in preide v stanje spanja, dokler katera druga nit ne vstopi na isti monitor in pokliče na notify (). Ta metoda sprosti ključavnico pred čakanjem in jo ponovno pridobi pred vrnitvijo iz metode wait ().



Metoda Wait () je tesno integrirana s sinhronizacijsko ključavnico. To se naredi z uporabo funkcije, ki ni na voljo neposredno iz sinhronizacijskega mehanizma.

Sintaksa:

sinhronizirano (lockObject) {while (! condition) {lockObject.wait ()} // ukrepajte tukaj}

Trenutna nit mora biti lastnik nadzornika predmeta. Klicati ga je treba samo iz sinhronizirane metode, sicer bo vrgla izjemo.

Obvestiti()

Ta metoda se uporablja za obveščanje da mora delovati. Zbudi eno nit, ki je imenovala počakaj () za isti predmet.

Upoštevajte, da klicanje obvestiti() sčasoma se ne odpove ključavnici. Čakalni niti pove, da se lahko zbudi. Kljub temu se zaklepanje dejansko ne opusti, dokler sinhronizirani blok prijavitelja ni zaključen. Zdaj pa recite, če pokličete obvestiti() na viru, vendar mora prijavitelj še vedno izvajati dejanja 10 sekund v svojem sinhroniziranem bloku, nit, ki je čakala, bo morala počakati vsaj še dodatnih 10 sekund, da bo prijavitelj sprostil zaklepanje predmeta, čeprav obvesti () je bil poklican.

Sintaksa:

sinhronizirano (lockObject) {// vzpostavi_pogoj lockObject.notify () // po potrebi katero koli dodatno kodo}

NotifyAll ()

Ta metoda se uporablja za prebujanje vseh niti, ki so na istem objektu poklicale wait (). Nit z najvišjo prioriteto se bo najprej zagnala v večini primerov, čeprav ni zagotovljena. Druge stvari so enake kot metoda notify ().

Zakaj in kako uporabljati Wait () in Notify () v Javi?

Uporabite funkcijo Wait and Notify ker so povezani s ključavnico in objekt ima ključavnico. Čeprav sta čakanje in obveščanje v Javi precej temeljni koncept, sta opredeljena v razred predmeta . Presenetljivo je, da ni tako enostavno napisati kode z uporabo čakanja in obveščanja. To lahko preizkusite s pisanjem kode za rešitev problema proizvajalca in potrošnika s čakanjem in obvestilom. Primer proizvajalca - Počakajte in obvesti v Java-EdurekiTukaj imam skupno Čakalna vrsta indve nitipoklical Producent in Potrošnik . Producent nit postavi številko v čakalno vrsto in Potrošnik nit porabi številke iz segmenta v skupni rabi.

Pogoj je, da je treba, ko je izdelek izdelan, prijaviti potrošniško nit in podobno, potem ko je treba prijaviti nit proizvajalca potrošnje. Ta inter-nitkomunikacijoje dosežen z uporabo čakanja in obvestila v Javi.

Opomba : W.ait in štmetode tify so definirane v razredu predmeta, in jih je treba poklicati znotraj sinhroniziranega bloka.

Primer

javni razred Thread1 {public static void main (String [] args) {Thread2 b = new Thread2 () b.start () sinhronizirano (b) {poskusite {System.out.println ('Čakam, da se 2 končata ...' ) b.wait ()} catch (InterruptedException e) {e.printStackTrace ()} System.out.println ('Total is:' + b.total)}}} class Thread2 extends Thread1 {int total @Override public void run () {sinhronizirano (to) {za (int i = 0 i<=100 i++) { total += i } notify() }}}

Upoštevajte, da je v zgornjem primeru predmet Thread2, to je b, sinhroniziran. Ta b zaključi izračun, preden glavna nit izpiše svojo skupno vrednost.

Izhod:

To nas pripelje do konca tega članka, kjer smo se naučili na Wait and Notify v Javi.Upam, da se je zgoraj omenjena vsebina izkazala za koristno pri izboljšanju vašega znanje. Nadaljujte z branjem, z raziskovanjem!

Preverite tudi Edureka, zaupanja vredno podjetje za spletno učenje z mrežo več kot 250.000 zadovoljnih učencev, ki se širijo po vsem svetu. Edurekin tečaj za usposabljanje in certificiranje Java J2EE in SOA je namenjen študentom in strokovnjakom, ki želijo biti razvijalec Java. Tečaj je zasnovan tako, da vam omogoči uvod v programiranje Java in vas usposobi za osnovne in napredne koncepte Java ter različne kot Hibernate & Spring.