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.
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.
2. attēls: Kalkulatora klase
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.