Tofauti Muhimu – kulala dhidi ya kusubiri katika Java
Lala na usubiri ni njia mbili zinazotumika kwa usomaji mwingi katika Java. Njia ya kulala ni ya darasa la Thread wakati njia ya kungojea ni kutoka kwa darasa la Kitu. Tofauti kuu kati ya kulala na kungoja katika Java ni kwamba, usingizi hutumika kusimamisha utekelezwaji wa uzi wa sasa kwa idadi maalum ya milliseconds huku njia ya kungojea inatumika kusababisha uzi wa sasa kungoja hadi uzi mwingine uwasilishe arifu au. notifyAll mbinu ya kitu.
Mazungumzo ni sehemu ndogo zaidi ya kuchakatwa katika mfumo wa uendeshaji. Ni mtiririko mmoja wa udhibiti ndani ya programu. Threads ni nyepesi. Multithreading ni utaratibu wa kuendesha nyuzi nyingi kwa wakati mmoja. Lugha za programu kama vile Java inasaidia usomaji mwingi. Multithreading ina faida kwa sababu inaruhusu kuendesha nyuzi nyingi kwa wakati mmoja na nyuzi ni huru kutoka kwa kila mmoja. Kuna njia katika Java ambazo zinaweza kutumika kwa usomaji mwingi. Mbili kati yao ni kulala na kungoja.
Kulala katika Java ni nini?
Kuna michakato mingi inayoendeshwa katika mfumo wa uendeshaji. Mchakato ni programu inayotekelezwa. Kila mchakato unaweza kuwa na nyuzi nyingi, na kuna ubadilishaji wa muktadha unaotokea kati ya nyuzi hizi. Katika Java, kuna njia mbili za kuunda thread. Hiyo ni kwa kupanua darasa la nyuzi au kwa kutekeleza kiolesura cha Runnable. Darasa la Thread lina wajenzi na njia za kuunda na kufanya shughuli kwenye uzi. Darasa la Thread huongeza darasa la Kitu na kutekeleza kiolesura kinachoweza kutumika. Kiolesura kinachoweza kutekelezwa kinapaswa kutekelezwa na darasa lolote ambalo matukio yake yamekusudiwa kutekelezwa na uzi. Wakati nyuzi inapofanya kazi, nambari ambayo inapaswa kutekeleza imeandikwa ndani ya njia ya kukimbia. Uzi unaopaswa kuendeshwa huchaguliwa na kipanga ratiba. Mfululizo mmoja pekee huendeshwa katika mchakato mmoja.
Mazungumzo hupitia awamu kadhaa. Baada ya kuunda kitu cha darasa la Thread, programu inaweza kuomba njia ya kuanza. Kabla ya kutumia njia hiyo, thread inasemekana kuwa katika hali mpya. Kipanga ratiba cha mazungumzo huchagua thread ya kuendesha. Ikiwa thread bado haijachaguliwa na kipanga ratiba lakini ikiwa njia ya kuanza imealikwa, basi thread iko katika hali inayoweza kukimbia. Baada ya kipanga ratiba kuchagua thread ya kutekeleza, inapita hadi hali inayoendelea. Ikiwa thread iko hai lakini haijatimiza masharti ya kuendeshwa kwa sasa, basi iko katika hali isiyoweza kuendeshwa au imezuiwa. Baada ya kukamilika kwa njia ya kukimbia, thread inakwenda kwenye hali ya kukomesha. Hizo ndizo awamu kuu za mzunguko wa maisha wa nyuzi.
Kuna mbinu mbalimbali zinazopatikana katika darasa la mazungumzo ili kutekeleza kazi tofauti. Njia ya usingizi hutumiwa kulala njia kwa muda maalum. Sintaksia ya njia ya kulala ni usingizi utupu wa umma (millisekunde ndefu) hutupa InterruptedException. Husababisha thread inayotekelezwa kwa sasa kusimamisha utekelezaji kwa muda kwa idadi maalum ya milisekunde. Ikiwa mazungumzo mengine yatakatiza mazungumzo ya sasa, hali iliyokatizwa ya mazungumzo ya sasa itafutwa wakati ubaguzi huu unatupwa.
Kielelezo 01: Programu ya Java yenye Mbinu ya Kulala
Kulingana na programu iliyo hapo juu, mbinu ya uendeshaji ina msimbo ambao unapaswa kutekelezwa. Katika programu kuu, vitu viwili vya MfanoThread1 huundwa, na njia za kuanza zinaalikwa juu yao. Hiyo itaruhusu kuendesha nambari ndani ya njia ya kukimbia. Uzi mmoja tu ndio unaotekelezwa kwa wakati mmoja. Pamoja na Uzi.kulala (1000); itaruhusu uzi wa kwanza kusitisha utekelezaji kwa milisekunde 1000. Wakati thread inalala, kipanga nyuzi huchukua uzi mwingine.
Subiri ni nini katika Java?
Nyezo nyingi zinaweza kufikia nyenzo inayoshirikiwa. Inaweza kusababisha kutoa pato lisilo sahihi. Usawazishaji wa nyuzi unaweza kutumika kutengeneza nyuzi moja tu kufikia rasilimali iliyoshirikiwa. Fikiria hali kama ifuatavyo. Ikiwa, kuna nyuzi mbili kama t1 na t2, t1 itaanza kuhifadhi maadili kwenye faili ya maandishi inayoitwa Text1.txt. Thamani hizo zitatumika kwa hesabu nyingine wakati t1 inarudi. Ikiwa t2 itaanza kabla ya t1 kurejea, t2 inaweza kubadilisha thamani zilizohifadhiwa na t1. Hii inaweza kusababisha t1 kutoa matokeo yasiyo sahihi. Kwa usaidizi wa maingiliano, wakati t1 inapoanza kutumia faili ya Text1.txt, faili hiyo inaweza kufungwa, kwa hiyo inapatikana tu kwa t1. T2 haiwezi kuibadilisha hadi t1 itoe kufuli ili kufikia faili hiyo ya maandishi. Wakati kazi imekamilika t1 inaweza kutolewa kufuli. Kufuli pia inajulikana kama mfuatiliaji.
Usawazishaji wa nyuzi unaweza kupatikana kwa mawasiliano baina ya nyuzi. Sehemu muhimu ni sehemu ya msimbo ambayo hufikia rasilimali zilizoshirikiwa. Katika mawasiliano kati ya nyuzi, thread inasimamishwa ikiendelea katika sehemu yake muhimu, na thread nyingine inaruhusiwa kuingia katika sehemu hiyo muhimu ya kutekelezwa. Inatekelezwa kwa kutumia njia za kusubiri, arifa na arifaZote. Wao ni wa darasa la Object. Mbinu ya kungoja inatumika kuruhusu uzi wa sasa kutoa kufuli na kungoja hadi uzi mwingine uwasilishe mbinu ya arifa au arifuYote kwa kitu. Njia ya arifa hutumiwa kuamsha uzi mmoja ambao unangojea kufuli. NotifyAll huamsha mazungumzo yote ambayo yanasubiri kufungwa.
Kielelezo 02: Darasa la Kikokotoo
Kielelezo 03: Mbinu Kuu
Darasa la Kikokotoo hupanua Mfululizo. Kizuizi kilichosawazishwa kiko ndani ya njia ya kukimbia. Njia ya kitanzi na arifa iko ndani ya kizuizi kilichosawazishwa. Ndani ya njia kuu, mfano wa nyuzi iliyoundwa na njia ya kuanza inaitwa kwa mfano huo. Njia kuu itasubiri hadi uzi utoe arifa. Wakati wa kutekeleza programu, njia kuu inasubiri hadi utekelezaji wote wa njia ya kukimbia na inangojea njia ya arifa. Mara tu njia ya arifa inapoitwa, njia kuu itaacha kungoja na kuanza kutekeleza nambari iliyobaki. Kuu inasubiri hadi uzi wa Kikokotoo ukamilike. Hatimaye, matokeo ya jumla yamechapishwa.
Ikiwa hakuna uzuiaji uliosawazishwa na ikiwa mbinu kuu ina msimbo kama ilivyo hapo chini, itatoa matokeo kama sifuri kwa sababu haingojei mazungumzo mengine yakamilike.
Kikokotoo t1=Kikokotoo kipya ();
t1. anza ();
System.out.println (t1.sum);
Je, Kuna Ufanano Gani Kati ya Kulala na Kusubiri katika Java?
Kulala na kungoja ni njia zinazoweza kutumika wakati wa kutekeleza usomaji mwingi katika Java
Kuna tofauti gani kati ya kulala na kusubiri katika Java?
lala dhidi ya kusubiri katika Java |
|
Njia ya kulala husababisha uzi wa sasa kusimamisha utekelezaji kwa idadi iliyobainishwa ya milisekunde, kulingana na usahihi na usahihi wa vipima muda na vipanga ratiba vya mfumo. | Njia ya kungojea husababisha mazungumzo ya sasa kusubiri hadi mazungumzo mengine yatume arifa au arifuYote mbinu ya kipengee. |
Kuhusishwa na Kufuli | |
Njia ya kulala haitoi kufuli kwenye kitu wakati wa kusawazisha. | Njia ya kusubiri hutoa kufuli wakati wa kusawazisha. |
Njia ya Utekelezaji | |
Njia ya kulala inatekelezwa kwenye mazungumzo ya sasa. | Njia ya kusubiri inaitwa kwenye kipengee. |
Darasa Husika | |
Kulala ni mbinu ya darasa la Thread. | Kungoja ni mbinu ya darasa la kitu. |
Kukamilika | |
Mchakato wa kulala hukamilika baada ya muda uliobainishwa kuisha. | Njia ya kusubiri inakatizwa kwa kupiga simu arifa au arifa mbinu zote. |
Muhtasari – kulala dhidi ya kusubiri katika Java
Kuna michakato mingi inayoendeshwa kwenye mfumo wa uendeshaji. Kila mchakato unaweza kuwa na nyuzi nyingi. Thread ni kitengo kidogo zaidi cha usindikaji katika mfumo wa uendeshaji. Lugha ya programu ya Java inasaidia usomaji mwingi. Inaruhusu kuendesha nyuzi nyingi kwa wakati mmoja. Kulala na kusubiri ni njia mbili ambazo zinaweza kutumika wakati wa kutekeleza thread nyingi. Tofauti kati ya kulala na kungoja katika Java ni kwamba, usingizi hutumika kusimamisha utekelezwaji wa uzi wa sasa kwa idadi maalum ya milliseconds huku njia ya kungojea inatumika kusababisha uzi wa sasa kungoja hadi uzi mwingine uwasilishe arifa au arifu. mbinu ya kitu.