Atšķirība starp miegu un gaidīšanu Java

Satura rādītājs:

Atšķirība starp miegu un gaidīšanu Java
Atšķirība starp miegu un gaidīšanu Java

Video: Atšķirība starp miegu un gaidīšanu Java

Video: Atšķirība starp miegu un gaidīšanu Java
Video: What is difference between sleep, yield and wait method ? || Java Concurrency Interview Question 2024, Decembris
Anonim

Galvenā atšķirība - miegs pret gaidīšanu Java versijā

Miegs un gaidīšana ir divas metodes, ko izmanto Java vairākpavedienu izveidei. Miega metode pieder klasei Thread, savukārt gaidīšanas metode ir no objektu klases. Galvenā atšķirība starp miegu un gaidīšanu Java ir tāda, ka miega režīms tiek izmantots, lai apturētu pašreizējā pavediena izpildi uz norādīto milisekundes skaitu, savukārt gaidīšanas metode tiek izmantota, lai pašreizējais pavediens gaidītu, līdz cits pavediens izsauc paziņojumu vai notifyAll metode objektam.

Pavediens ir mazākā apstrādes vienība operētājsistēmā. Tā ir viena secīga vadības plūsma programmā. Vītnes ir vieglas. Vairāku pavedienu veidošana ir vairāku pavedienu darbības mehānisms vienlaikus. Programmēšanas valodas, piemēram, Java, atbalsta daudzpavedienu izmantošanu. Multithreading ir priekšrocības, jo tas ļauj palaist vairākus pavedienus vienlaicīgi un pavedieni ir neatkarīgi viens no otra. Java ir metodes, kuras var izmantot vairāku pavedienu veidošanai. Divi no viņiem guļ un gaida.

Kas ir miegs Java valodā?

Operētājsistēmā darbojas vairāki procesi. Process ir programma, kas tiek izpildīta. Katram procesam var būt vairāki pavedieni, un starp šiem pavedieniem notiek konteksta maiņa. Java ir divi veidi, kā izveidot pavedienu. Tas ir, paplašinot pavedienu klasi vai ieviešot Runnable interfeisu. Klasei Thread ir konstruktori un metodes, lai izveidotu un veiktu darbības ar pavedienu. Thread klase paplašina objektu klasi un ievieš Runnable interfeisu. Runnable interfeiss ir jārealizē jebkurai klasei, kuras gadījumus ir paredzēts izpildīt ar pavedienu. Kad pavediens tiek izpildīts, izpildāmais kods tiek ierakstīts izpildes metodē. Pavedienu, kuram vajadzētu palaist, atlasa pavedienu plānotājs. Vienā procesā darbojas tikai viens pavediens.

Pavediens iziet vairākas fāzes. Pēc Thread klases objekta izveidošanas programmētājs var izsaukt sākuma metodi. Pirms šīs metodes izsaukšanas pavediens tiek uzskatīts par jauno stāvokli. Pavedienu plānotājs atlasa pavedienu palaišanai. Ja pavedienu plānotājs vēl nav atlasījis pavedienu, bet ir izsaukta sākuma metode, pavediens ir izpildāmā stāvoklī. Kad pavedienu plānotājs ir atlasījis izpildāmo pavedienu, tas pāriet uz darbības stāvokli. Ja pavediens ir dzīvs, bet pašlaik nav piemērots palaišanai, tas ir nedarbojams vai bloķēts. Pēc izpildes metodes pabeigšanas pavediens pāriet uz pārtrauktu stāvokli. Tās ir pavediena dzīves cikla galvenās fāzes.

Pavedienu klasē ir pieejamas dažādas metodes dažādu uzdevumu veikšanai. Miega metode tiek izmantota, lai gulētu šo metodi noteiktu laiku. Miega metodes sintakse ir publisks miegs (ilgas milisekundes), kas rada InterruptedException. Tas liek pašreiz izpildošajam pavedienam uz noteiktu milisekunžu skaitu īslaicīgi apturēt izpildi. Ja cits pavediens pārtrauc pašreizējo pavedienu, pašreizējā pavediena pārtrauktais statuss tiek notīrīts, izdarot šo izņēmumu.

Atšķirība starp miegu un gaidīšanu Java
Atšķirība starp miegu un gaidīšanu Java

Attēls 01: Java programma ar miega metodi

Saskaņā ar iepriekš minēto programmu palaišanas metode satur kodu, kas jāizpilda. Galvenajā programmā tiek izveidoti divi ExampleThread1 objekti, un tajos tiek izsauktas sākuma metodes. Tas ļaus palaist kodu palaišanas metodē. Vienlaicīgi tiek izpildīts tikai viens pavediens. Ar pavedienu.gulēt (1000); ļaus pirmajam pavedienam pārtraukt izpildi uz 1000 milisekundēm. Kad pavediens ir miega režīmā, pavedienu plānotājs uztver otru pavedienu.

Kas ir gaidīšana Java?

Koplietotam resursam var piekļūt vairāki pavedieni. Tas var izraisīt nepareizas izvades ģenerēšanu. Pavedienu sinhronizāciju var izmantot, lai izveidotu tikai vienu pavedienu, lai piekļūtu koplietotajam resursam. Pieņemsim šādu situāciju. Ja ir divi pavedieni, piemēram, t1 un t2, t1 sāciet saglabāt vērtības teksta failā ar nosaukumu Text1.txt. Šīs vērtības tiks izmantotas citiem aprēķiniem, kad atgriezīsies t1. Ja t2 sākas pirms t1 atgriešanās, t2 var mainīt t1 saglabātās vērtības. Tas var izraisīt t1 nepareizas izvades nodrošināšanu. Ar sinhronizācijas palīdzību, kad t1 sāk lietot failu Text1.txt, šo failu var bloķēt, tāpēc tam var piekļūt tikai t1. T2 nevar to mainīt, kamēr t1 neatbrīvo bloķēšanu, lai piekļūtu šim teksta failam. Kad uzdevums ir pabeigts, t1 var atbrīvot slēdzeni. Slēdzene ir pazīstama arī kā monitors.

Pavedienu sinhronizāciju var panākt, izmantojot starppavedienu saziņu. Kritiskā sadaļa ir koda segments, kas piekļūst koplietotajiem resursiem. Starppavedienu saziņā pavediena darbība tiek apturēta tā kritiskajā sadaļā, un tajā pašā kritiskajā sadaļā ir atļauts ienākt citam pavedienam, lai tas tiktu izpildīts. Tas tiek īstenots, izmantojot gaidīšanas, paziņošanas un paziņošanas metodes. Tie pieder pie objektu klases. Gaidīšanas metode tiek izmantota, lai ļautu pašreizējam pavedienam atbrīvot bloķēšanu un gaidīt, līdz cits pavediens izsauc objekta notify vai notifyAll metodi. Paziņošanas metode tiek izmantota, lai pamodinātu vienu pavedienu, kas gaida bloķēšanu. NotifyAll pamodina visus pavedienus, kas gaida bloķēšanu.

Atšķirība starp miegu un gaidīšanu Java_Attēls 02
Atšķirība starp miegu un gaidīšanu Java_Attēls 02

2. attēls: Kalkulatora klase

Galvenā atšķirība starp gulēšanu un gaidīšanu Java
Galvenā atšķirība starp gulēšanu un gaidīšanu Java

03. attēls: galvenā metode

Kalkulators paplašina pavedienu. Sinhronizētais bloks atrodas izpildes metodē. For cilpa un paziņošanas metode atrodas sinhronizētajā blokā. Galvenajā metodē šajā instancē tiek izsaukts izveidotā pavediena gadījums un sākuma metode. Galvenā metode gaidīs, līdz pavediens sniegs paziņojumu. Palaižot programmu, galvenā metode nogaida, līdz tiek izpildīta visa palaišanas metodes izpilde, un gaida paziņošanas metodi. Kad paziņošanas metode ir izsaukta, galvenā metode pārstāj gaidīt un sāk izpildīt pārējo kodu. Galvenais gaida, līdz kalkulatora pavediens ir pabeigts. Visbeidzot tiek izdrukāts summas rezultāts.

Ja nav sinhronizēta bloka un ja galvenajai metodei ir tālāk norādītais kods, tā izvadīs kā nulle, jo tā negaida, kamēr otrs pavediens tiks pabeigts.

Kalkulators t1=jauns kalkulators ();

t1. sākums ();

System.out.println (t1.sum);

Kāda ir līdzība starp miegu un gaidīšanu Java?

Gan gulēšana, gan gaidīšana ir metodes, kuras var izmantot, ieviešot vairākpavedienu Java

Kāda ir atšķirība starp gulēšanu un gaidīšanu Java?

gulēt vs gaidīt Java

Miega metode izraisa pašreizējā pavediena izpildes apturēšanu uz noteiktu milisekunžu skaitu, atkarībā no sistēmas taimeru un plānotāju precizitātes un precizitātes. Gaidīšanas metode liek pašreizējam pavedienam gaidīt, līdz cits pavediens izsauc objekta notify vai notifyAll metodi.
Saistība ar slēdzeni
Miega metode neatbrīvo objekta bloķēšanu sinhronizācijas laikā. Gaidīšanas metode sinhronizācijas laikā atbrīvo bloķēšanu.
Izpildes metode
Miega metode tiek izpildīta pašreizējā pavedienā. Objektam tiek izsaukta gaidīšanas metode.
Saistītā klase
Miega režīms ir pavedienu klases metode. Gaidīšana ir objektu klases metode.
Pabeigšana
Miega process ir pabeigts pēc norādītā laika perioda beigām. Gaidīšanas metode tiek pārtraukta, izsaucot notify vai notifyAll metodes.

Kopsavilkums - miegs pret gaidīšanu Java versijā

Operētājsistēmā darbojas vairāki procesi. Katram procesam var būt vairāki pavedieni. Pavediens ir mazākā apstrādes vienība operētājsistēmā. Java programmēšanas valoda atbalsta daudzpavedienu izmantošanu. Tas ļauj vienlaikus palaist vairākus pavedienus. Miega režīms un gaidīšana ir divas metodes, kuras var izmantot, ieviešot daudzpavedienu. Atšķirība starp miegu un gaidīšanu Java ir tāda, ka miega režīms tiek izmantots, lai apturētu pašreizējā pavediena izpildi uz norādīto milisekundes skaitu, savukārt gaidīšanas metode tiek izmantota, lai pašreizējais pavediens gaidītu, līdz cits pavediens izsauc paziņojumu vai notifyAll. metode objektam.

Ieteicams: