..


Sponsorētās saites

Pārvaldītu kopīgos datu Java

Pants raksta Damian Verda
Lapa 1 no 2

Mēs varam domāt par kopīgu datu, piemēram iedarbību uz jebkuru informācijas apstrādes darbību no vairākām daļām. Iedomājieties, piemēram, veikals skaitlisko vērtību, kas pārstāv eiro / dolāra. Mums ir programma, kas periodiski pārbauda, ​​kāds valūtas maiņas kursa un atjaunina vērtību mainīgā. Viena vai vairākas citas programmas, tomēr būs izmantot atjaunināto informāciju, lai darbotos valūtas kursa maiņas cenu.

Ievērojiet, kā dalītas pārvaldības, pat šajā vienkāršajā piemērā, nepieciešama īpaša uzmanība. Iedomājieties, piemēram, ka, lai gan pieteikumu ir nepieciešams, lai izlasītu to valūtas kursu, konvertēt, ir saņēmusi arī citas programmas, lūgumu mainīt valūtas kursa pati.

(Raksts turpina tālāk ...)

Kura ir izpildīts pirmais? Kuras valūtas kursa Konversija notiek? Problēmas, pat dažos gadījumos nedaudz sarežģītāka, tas varētu būt vēl smagākas.

Iedomājieties, ka procentu mainīgais nav elementāras, bet, piemēram, veido datu kopumu. To tagad var veikt tikai daļēju rakstīt, un pēc tam seko lasījums no pabeigšanas rakstiski. Darījumi tad būtu jāveic ar vērtību kopu mainījās tikai daļēji, rada bezjēdzīgas rezultātus un tādēļ nav pieļaujama.

Tā kā pastāv šāda veida problēmas daudzās programmēšanas valodās paredz konkrētus darbarīkus, kas pārvaldītu kopīgos mainīgos. Mēs izskatīs turpmāk, jo īpaši kā šis problēmas kategorija ir risināts Java programmēšanas valoda, kas ir viens no visvairāk lieto visu.

Vispirms jums ir saprast, kā mēs varam nodrošināt, ka tikai vienā programmā uzreiz, vai precīzāk tikai viens pavediens laikā ( pavediens ir pamata sastāvdaļa procesu vai programmu, citiem vārdiem sakot, programma var sastāvēt no vairākiem diegiem, darboties vienlaicīgi) var piekļūt kopīgu mainīgo. Mehānisms, kas ļauj mums piedāvāt šo garantiju sauc par savstarpēju izslēgšanu.

Savstarpēju izslēgšanu

Iedomājieties attīstītu klasei (vai datu un metožu kopums, tas ir, noderīgas funkcijas, lai apstrādātu datus, pats) nosaucis Variabile_Condivisa strukturēta šādi:






 valsts klases Variabile_Condivisa







 {



   



 euro_dollaro apgrozību;



   



 euro_sterlina apgrozību;





   



 Variabile_Condivisa ()



  



 {



     



 euro_dollaro = 1;



     



 euro_sterlina = 1;



  



 }





   



 set_euro_dollaro spēkā neesošu (float e_d) = {euro_dollaro e_d;}



   



 set_euro_sterlina spēkā neesošu (float e_s) = {euro_sterlina e_s;}





   



 get_euro_dollaro float () {return euro_dollaro;}



   



 get_euro_sterlina float () {return euro_sterlina;}







 }



Ar diviem paziņojumiem, un ka euro_dollaro euro_sterlina, kas pārstāv kursa eiro / dolāra un eiro / mārciņas un vēlētos dalīties ar informāciju starp vairākām programmām (vai starp vairākiem diegiem). Izstrādātas metodes, ļauj piešķirt vērtību šiem datiem (un set_euro_dollaro set_euro_sterlina) un nolasīt šo vērtību (un get_euro_dollaro get_euro_sterlina).

Tad mēs noteiktu īpašu metodi (Variabile_Condivisa), ko sauc klases būvētājs ir izpildīts un ka katra Variabile_Condivisa radīšanu, šajā gadījumā, nosakot mainīgo lielumu vērtības, un euro_dollaro euro_sterlina tikt uzstādīts uz 1.

Tad mēs radīt mūsu programmā objekta veidu nosaukts var Variabile_Condivisa (klasē pārstāv kopuma vienību ar kopējām īpašībām, kamēr objekts ir īpašs elements, šis komplekts, kas var būt atsauces programmas ietvaros ) šādi:






 Variabile_Condivisa Variabile_Condivisa var = new ();



Kā mēs varam nodrošināt, ka šajā brīdī nav neviena datu vadībai dalītas var problēmas? Java valoda ir paredzēts atslēgvārds (vai atslēgvārdus) sinhronizēti, kas pieņem jebkuru objektu kā ​​parametru. Caur sinhronizēts, jūs varat noteikt, kā parādīts piemērā, bloka kodu:





 sinhronizēta (VaR)







 {



  



 / / Sinhronizēti bloku kods atdalīts (VaR)

  





 }



Pirms veikt instrukcijas sinhronizēti bloku, jebkādas pavediens iegūst atslēga uz mainīgo var, vai bloķēt visus turpmāku pieeju paša bloka kodu, kamēr atslēga ir atbrīvota, vai līdz brīdim, kad darbojas viss bloks piemērā kodu jānorobežo ar cirtaini lencēm.

Citiem vārdiem sakot, pirmais pavediens (kas mums iedomāties iepriekš piezvanīt), kas veic sinhronizēti paziņojumu (var), faktiski rada barjeru, kas neļauj veikt citu pavedienu, lai izpildītu sinhronizēti paziņojumu (var), kamēr pirmais nav pabeigusi izpildi sinhronizētu bloka kodu ierobežota. Šajos blokos, pēc tam ievieto instrukcijas lasīt un rakstīt kopīgu datu.

Tādā veidā tiek nodrošināts, savstarpēju izslēgšanu, kas nodrošina, ka tikai viens pavediens, vienlaikus var piekļūt koplietojamo mainīgs. Jāatzīmē, ka tomēr ir nepieciešams rūpīgi izvēlēties objekts nodots kā parametrs, kas sinhronizēti. Jābūt, jo kopēju objektu visas tēmas, kurā vēlaties izveidot mehānismu savstarpēju izslēgšanu, piemēram, kā šajā gadījumā, mainīgo lielumu par to, ka jūs vēlaties lasīt vai mainīt.

Iedomājieties, šajā brīdī, jūs vēlaties, lai uzstādītu savu programmu, lai tēmas, kas vēlas lasīt vērtību mainīgā var tiks aizturēts un novērtē to rezultātus tikai pēc pirmā update pēc to pieprasījuma. Iedomājieties, ka jūs vēlaties, lai definētu sinhronizācijas mehānismu starp lasīšanu un rakstīšanu.

Šajā pašā kategorijā ...
E-Learning
Linux Course Linux Course
Pilnīga rokasgrāmata atvērtā koda sistēma. Atlaide -10% līdz 2012/06/01.
PHP Course PHP Course
Pilns kurss, lai radītu dinamisku tīmekļa vietnes. Atlaide -5% līdz 2012/06/01.
Protams, Ruby un Ruby On Rails Protams, Ruby un Ruby On Rails
Izveide programmatūras un Web lietojumprogrammas ar Ruby un ROR. Atlaide -10% līdz 2012/06/01.
Sponsorētās saites