Razlika Med Spanjem In čakanjem V Javi

Kazalo:

Razlika Med Spanjem In čakanjem V Javi
Razlika Med Spanjem In čakanjem V Javi

Video: Razlika Med Spanjem In čakanjem V Javi

Video: Razlika Med Spanjem In čakanjem V Javi
Video: Leja Dolenc Grošelj: Zakaj ljudje spimo? 2024, April
Anonim

Ključna razlika - spanje in čakanje v Javi

Spanje in čakanje sta dve metodi, ki se uporabljata za večnitnost v Javi. Metoda spanja spada v razred Thread, metoda čakanja pa iz predmeta Object. Ključna razlika med mirovanjem in čakanjem v Javi je ta, da se spanje začasno ustavi izvajanje trenutne niti za določeno število milisekund, medtem ko metoda čakanja povzroči, da trenutna nit počaka, dokler druga nit ne prikliče obvestila ali metoda notifyAll za objekt.

Nit je najmanjša enota obdelave v operacijskem sistemu. To je en sam zaporedni tok nadzora znotraj programa. Niti so lahke. Večnitnost je mehanizem izvajanja več niti hkrati. Programski jeziki, kot je Java, podpirajo večnitnost. Večnitnost ima prednosti, ker omogoča zagon več niti hkrati in so niti neodvisne ena od druge. V Javi obstajajo metode, ki jih lahko uporabimo za večnitnost. Dva od njih sta spanja in čakanja.

VSEBINA

1. Pregled in ključna razlika

2. Kaj je spanje v Javi

3. Kaj je čakanje v Javi

4. Podobnosti med spanjem in čakanjem v Javi

5. Vzporedna primerjava - spanje in čakanje v Javi v tabelarni obliki

6. Povzetek

Kaj je spanje v Javi?

V operacijskem sistemu se izvaja več procesov. Proces je program v izvedbi. Vsak postopek ima lahko več niti in med temi nitmi se dogaja preklapljanje konteksta. V Javi obstaja nit na dva načina. To je z razširitvijo razreda niti ali z izvajanjem vmesnika Runnable. Razred Thread ima konstruktorje in metode za ustvarjanje in izvajanje operacij v niti. Razred Thread razširja razred Object in izvaja vmesnik Runnable. Runnable vmesnik mora izvajati kateri koli razred, katerega primerki naj bi se izvajali z nitjo. Ko se nit izvede, je koda, ki jo je treba izvršiti, zapisana znotraj metode zagon. Nit, ki naj se zažene, izbere načrtovalnik niti. V enem postopku teče samo ena nit.

Nit gre skozi več faz. Po ustvarjanju predmeta razreda Thread lahko programer prikliče način zagona. Pred uporabo te metode naj bi bila nit v novem stanju. Načrtovalnik niti izbere nit, ki jo želite zagnati. Če načrtovalec niti še ni izbral niti, če pa je priklicana metoda zagona, je nit v stanju, ki ga je mogoče izvesti. Ko načrtovalnik niti izbere nit za izvedbo, preide v stanje delovanja. Če je nit živa, vendar trenutno ni primerna za zagon, je v stanju, ki ga ni mogoče zagnati ali blokirati. Po zaključku metode zagon preide nit v zaključeno stanje. To so glavne faze življenjskega cikla niti.

V razredu niti so na voljo različne metode za izvajanje različnih nalog. Metoda spanja se uporablja za spanje metode za določen čas. Sintaksa metode spanja je javni void sleep (dolge milisekunde), ki vrže InterruptedException. Zaradi trenutne izvedbene niti se začasno ustavi izvajanje za določeno število milisekund. Če druga nit prekine trenutno nit, se prekinjeno stanje trenutne niti počisti, ko se vrne ta izjema.

Razlika med spanjem in čakanjem v Javi
Razlika med spanjem in čakanjem v Javi

Slika 01: Java program z načinom spanja

V skladu z zgornjim programom metoda zagon vsebuje kodo, ki jo je treba izvesti. V glavnem programu sta ustvarjena dva predmeta ExampleThread1 in na njih se prikličeta zagonski metodi. To bo omogočilo zagon kode znotraj metode zagon. Naenkrat se izvede samo ena nit. Z nitjo. spanje (1000); bo omogočil, da prva nit zaključi izvajanje za 1000 milisekund. Ko nit spi, načrtovalnik niti prevzame drugo nit.

Kaj je čakanje v Javi?

Do virov v skupni rabi lahko dostopa več niti. Lahko povzroči napačen izhod. Sinhronizacijo niti lahko uporabimo za izdelavo samo ene niti za dostop do vira v skupni rabi. Predpostavimo situacijo, kot sledi. Če obstajata dve niti kot t1 in t2, začne t1 shranjevati vrednosti v besedilno datoteko z imenom Text1.txt. Te vrednosti bodo uporabljene za nekatere druge izračune, ko se vrne t1. Če se t2 začne pred vrnitvijo t1, lahko t2 spremeni vrednosti, shranjene s t1. To lahko povzroči, da t1 odda napačen izhod. Ko t1 začne s pomočjo sinhronizacije uporabljati datoteko Text1.txt, je to datoteko mogoče zakleniti, zato je dostopna samo t1. T2 ga ne more spremeniti, dokler t1 ne sprosti ključavnice za dostop do te besedilne datoteke. Ko je naloga končana, lahko t1 sprosti ključavnico. Ključavnica je znana tudi kot monitor.

Sinhronizacijo niti lahko dosežemo s komunikacijo med nitmi. Kritični odsek je segment kode, ki dostopa do skupnih virov. V komunikaciji med nitmi je nit zaustavljena in se izvaja v svojem kritičnem odseku, drugi nit pa lahko vstopi v isti kritični odsek, ki ga je treba izvesti. Izvaja se z uporabo metod wait, notify in notifyAll. Spadajo v razred Object. Metoda čakanja se uporablja, da trenutna nit dovoli sprostitev ključavnice in počaka, dokler druga nit za objekt ne sproži metode notify ali notifyAll. Način obveščanja se uporablja za prebujanje ene niti, ki čaka na zaklepanje. NotifyAll zbudi vse niti, ki čakajo na ključavnico.

Razlika med spanjem in čakanjem v sliki Java Slika 02
Razlika med spanjem in čakanjem v sliki Java Slika 02

Slika 02: Razred kalkulatorja

Ključna razlika med spanjem in čakanjem v Javi
Ključna razlika med spanjem in čakanjem v Javi

Slika 03: Glavna metoda

Razred Kalkulator razširja nit. Sinhronizirani blok je znotraj metode izvajanja. Metoda for loop in notify je znotraj sinhroniziranega bloka. Znotraj glavne metode se na tem primerku pokliče primerek niti, ki je bila ustvarjena, in metoda zagona. Glavna metoda bo počakala, dokler nit ne bo dala obvestila. Pri izvajanju programa glavna metoda počaka do celotne izvedbe metode izvajanja in čaka na metodo notify. Ko se prikliče metoda notify, glavna metoda preneha čakati in začne izvajati preostalo kodo. Main čaka, dokler ni nit kalkulatorja končana. Na koncu se natisne rezultat vsote.

Če ni sinhroniziranega bloka in če ima glavna metoda kodo, kot je prikazano spodaj, bo izhod enak nič, ker ne čaka, da se druga nit zaključi.

Kalkulator t1 = nov kalkulator ();

t1. start ();

System.out.println (t1.sum);

Kakšna je podobnost med spanjem in čakanjem v Javi?

Tako mirovanje kot čakanje sta metodi, ki ju lahko uporabimo pri izvajanju večnitnosti v Javi

Kakšna je razlika med spanjem in čakanjem v Javi?

Diff Article Sredina pred mizo

spanje vs čakanje v Javi

Metoda mirovanja povzroči, da trenutna nit začasno ustavi izvajanje za določeno število milisekund, odvisno od natančnosti in natančnosti sistemskih časovnikov in načrtovalcev. Metoda čakanja povzroči, da trenutna nit počaka, dokler druga nit za objekt ne sproži metode notify ali notifyAll.
Povezava z Lockom
Metoda spanja med sinhronizacijo ne sprosti zaklepanja predmeta. Način čakanja sprosti zaklepanje med sinhronizacijo.
Način izvedbe
Metoda spanja se izvede na trenutni niti. Na predmetu se pokliče metoda čakanja.
Pridruženi razred
Spanje je metoda razreda Thread. Čakanje je metoda razreda predmeta.
Dokončanje
Postopek spanja se konča po poteku določenega časa. Način čakanja se prekine s klicanjem metod notify ali notifyAll.

Povzetek - spanje vs čakanje v Javi

V operacijskem sistemu se izvaja več procesov. Vsak postopek ima lahko več niti. Nit je najmanjša enota obdelave v operacijskem sistemu. Programski jezik Java podpira večnitnost. Omogoča zagon več niti hkrati. Spanje in čakanje sta dve metodi, ki ju je mogoče uporabiti pri izvajanju večnitnega načina. Razlika med spanjem in čakanjem v Javi je v tem, da se spanje začasno ustavi izvrševanje trenutne niti za določeno število milisekund, medtem ko metoda čakanja povzroči, da trenutna nit počaka, dokler druga nit ne pokliče obvestila ali obvestiAll metoda za objekt.

Priporočena: