Razlika med spanjem in čakanjem na Javi

Ključna razlika - spanje proti čakanju Java
 

Spanje in čakanje sta dve metodi, ki se uporabljata za večkratno branje na Javi. Metoda spanja pripada razredu Thread, medtem ko je metoda čakanja iz razreda Object. The ključna razlika med spanjem in čakanjem na Javi je to, mirovanje se uporablja za zaustavitev izvajanja trenutne niti za določeno število milisekund, medtem ko se metoda čaka uporabi, da trenutna nit počaka, da druga nit prikliče metodo notify or notifyAll za predmet.

Nit je najmanjša enota obdelave v operacijskem sistemu. Gre za en sam zaporedni tok nadzora znotraj programa. Niti so lahke. Multithreading je mehanizem poganjanja več niti hkrati. Programski jeziki, kot je Java, podpirajo večstransko branje. Multithreading ima prednosti, saj omogoča zagon več niti hkrati in niti so neodvisne ena od druge. Na Javi obstajajo metode, ki jih je mogoče uporabiti za večkratno branje. Dva od njih spita in čakata.

VSEBINA

1. Pregled in ključne razlike
2. Kaj je spanje na Javi
3. Kaj se čaka v Javi
4. Podobnosti med spanjem in čakanjem na Javi
5. Primerjava ob strani - spanje v primerjavi s čakom na Javi v tabeli
6. Povzetek

Kaj je spanje na Javi?

V operacijskem sistemu deluje več procesov. Proces je program v izvedbi. Vsak postopek ima lahko več niti, med temi nitmi pa pride do preklopa konteksta. Na Javi obstajata dva načina za ustvarjanje niti. To je s podaljšanjem razreda niti ali z izvajanjem vmesnika Runnable. Razred Thread ima konstruktorje in metode za ustvarjanje in izvajanje operacij na niti. Razred Thread razširi razred Object in izvaja vmesnik Runnable. Vmesnik Runnable bi moral izvajati vsak razred, katerega primerke naj bi izvedel nit. Ko se nit izvrši, je koda, ki jo je treba izvesti, zapisana znotraj metode izvajanja. Niti, ki naj se zaženejo, izbere planer nitk. V enem samem postopku poteka samo ena nit.

Niti poteka skozi več faz. Po ustvarjanju predmeta razreda Thread lahko programer prikliče začetno metodo. Preden prikličete to metodo, naj bi bila nit v novem stanju. Planer nitk izbere nit, ki naj se zažene. Če nit še ne izbere načrtovalnik niti, če pa se prikliče metoda zagona, je nit v stanju, ki ga je mogoče izvesti. Ko načrtovalec niti izbere nit, ki jo bo izvedel, 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 izvajanja nit preide v končano 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 uspavanje metode za določen čas. Skladnja za način mirovanja je javno neveljavno spanje (dolge milisekunde) vrže InterruptException. To povzroči trenutno izvršeno nit, da ustavi izvršitev začasno za določeno število milisekund. Če druga nit prekine trenutni navoj, se prekinjeno stanje trenutne nitke počisti ob vrženju te izjeme.

Slika 01: Program Java z načinom mirovanja

Po zgornjem programu metoda zagon vsebuje kodo, ki jo je treba izvesti. V glavnem programu se ustvarita dva predmeta ExampleThread1 in nanje se prikličejo načini zagona. To bo omogočilo zagon kode znotraj metode run. Hkrati se izvede samo ena nit. Z nitjo. spanja (1000); bo omogočil, da prva nit zaključi izvedbo za 1000 milisekund. Ko nit spi, urejevalnik niti dvigne drugo nit.

Kaj je čakati v Javi?

Več skupnih niti lahko dostopa do skupnega vira. Lahko povzroči napačen izhod. Sinhronizacijo niti lahko uporabite samo za eno nit za dostop do skupnega vira. Predpostavimo situacijo na naslednji način. Če obstajata dve niti kot t1 in t2, t1 začnite shranjevati vrednosti v besedilno datoteko z imenom Text1.txt. Te vrednosti bodo uporabljene za kakšen drug izračun, ko se vrne t1. Če se t2 začne, preden se vrne t1, lahko t2 spremeni vrednosti, shranjene s t1. To lahko povzroči napačen izhod t1. Ko začne t1 uporabljati datoteko Text1.txt s sinhronizacijo, lahko to datoteko zaklene, tako da je dostopna samo s 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 je mogoče doseči s komunikacijo med nitmi. Kritičen odsek je segment kode, ki dostopa do skupnih virov. V komunikaciji med nitmi je nit zaustavljena v svojem kritičnem odseku, v isti kritični odsek pa se lahko vnese še ena nit. Izvaja se z metodami čakanja, obveščanja in notifikacijeVse. Spadajo v razred Object. Metoda čakanja se uporablja, da trenutni nit omogoči sprostitev ključavnice in počaka, da druga nit prikliče metodo notify or notifyAll za objekt. Metoda obveščanja se uporablja za prebujanje ene same niti, ki čaka na ključavnico. Obavestilo zbudi vse niti, ki čakajo na ključavnici.

Slika 02: Razred kalkulatorja

Slika 03: Glavna metoda

Razred Kalkulator podaljša nit. Sinhronizirani blok je znotraj metode izvajanja. Metoda za zanko in obvestilo je znotraj sinhroniziranega bloka. Znotraj glavne metode se na tem primerku prikliče primerek niti, ki se ustvari, in začetna metoda. Glavna metoda bo počakala, da nit pošlje obvestilo. Pri izvajanju programa glavna metoda počaka do celotne izvedbe metode zagon in počaka na postopek obveščanja. Ko je poklicana metoda obveščanja, glavna metoda neha čakati in začne izvajati preostalo kodo. Glavni čaka, da se konča nit kalkulatorja. Na koncu se natisne rezultat vsote.

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

Kalkulator t1 = nov kalkulator ();

 t1. začetek ();

System.out.println (t1.sum);

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

  • Tako spanje kot čakanje sta metodi, ki ju je mogoče uporabiti pri izvajanju večkratnega branja na Javi

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

spanje v primerjavi s čakom na Javi

Metoda mirovanja povzroči, da trenutna nit zaustavi izvedbo za določeno število milisekund, ob upoštevanju natančnosti in natančnosti sistemskih časovnikov in načrtovalcev. Metoda čakanja povzroči, da trenutna nit čaka, da druga nit prikliče metodo notify or notifyAll za objekt.
 Zveza z Lock
Metoda spanja med sinhronizacijo ne sprosti ključavnice na predmetu. Metoda čakanja sprosti zaklep med sinhronizacijo.
Način izvršitve
Metoda spanja se izvede na trenutni niti. Na predmet se prikliče metoda čakanja.
 Pridruženi razred
Spanje je metoda razreda nit. Čakanje je metoda razreda Objekt.
Dokončanje
Postopek spanja je končan po preteku določenega časa. Način čakanja prekinemo s klicanjem metod notifikacije ali notifyAll.

Povzetek - spanje proti čakanju Java

V operacijskem sistemu deluje več procesov. Vsak postopek ima lahko več niti. Nit je najmanjša enota obdelave v operacijskem sistemu. Programski jezik Java podpira večstransko branje. Omogoča izvajanje več niti hkrati. Spanje in čakanje sta dve metodi, ki ju lahko uporabimo pri izvajanju večreznih navojev. Razlika med spanjem in čakanjem na Javi je v tem, da se mirovanje uporablja za zaustavitev izvajanja trenutne nitke za določeno število milisekund, medtem ko se metoda čaka uporabi, da trenutna nit počaka, da druga nit prikliče obvestilo ali notifyAll metoda za objekt.

Referenca:

1. "Komunikacija med nitmi na Javi - Javatpoint.". JavaTPoint. Na voljo tukaj
2. Inter Niti Komunikacija v Javnem večstranskem zapisu | Vadnica za osnovno Java | Študijska noč. Na voljo tukaj