..


Rėmėjų nuorodos

Valdymo bendrų duomenų Java

Straipsnį parašė Damiano verda
Puslapis 1 iš 2

Mes galime galvoti apie bendrą duomenų, pavyzdžiui, bet kokios kitos informacijos apdorojimo užduotis patirti daugiau šalių. Įsivaizduokite, pavyzdžiui, parduotuvėje skaitinė vertė sudaro euro / dolerio. Mes turime programą, kuri periodiškai tikrina, ką valiutos kurso ir atnaujina kintamojo reikšmę. Vienas ar daugiau kitų programų, tačiau bus naudojamas atnaujintą informaciją veikti valiutų keitimo kurso kainą.

Atkreipkite dėmesį, kaip valdyti bendrai, net šį paprastą Pavyzdžiui, reikia skirti ypatingą dėmesį. Įsivaizduokite, pavyzdžiui, kad nors prašymą reikia skaityti kurso konvertuoti, taip pat gauna kitą programą, prašymą pakeisti kurso pati.

Kuris yra vykdomas pirmas? Kuris valiutų keitimo kurso daroma? Problema, net kai kuriais atvejais šiek tiek sudėtingesnis, gali būti net sunkesni.

Įsivaizduokite, kad palūkanų kintamasis nėra elementarios, bet, pavyzdžiui, sudaro keletas duomenų rinkinių. Tai dabar gali būti atlikti tik dalinį rašyti, ir tada po nuo rašymo užbaigimo svarstymą. Sandorius tuomet būtų atliekamas vertybių pasikeitė tik iš dalies nustatyti, dėl kurio atsiranda prasmės rezultatų, ir todėl nepriimtinas.

Atsižvelgiant į šios problemos daugelis programavimo kalbų pateikti konkrečias priemones siekiant bendrų kintamųjų valdymo rūšis egzistuoja. Mes nagrinėti toliau visų pirma, nes tai problemų kategorija yra tvarkomi Java programavimo kalba, viena iš labiausiai naudojamų visų.

Pirmiausia turite suprasti, kaip galime užtikrinti, kad tik viena programa vienu metu, arba tiksliau tik viena gija vienu metu (vienas siūlas yra pagrindinis komponentas, procesas ar programa, kitaip tariant, programa gali būti sudarytas iš daug temų, veikti kartu) gali prieiti prie bendrai kintamąjį. Mechanizmą, kuris leidžia mums pasiūlyti šią garantiją yra vadinama tarpusavio atskirtį.

Tarpusavio atskirties

Įsivaizduokite, kuriant klasės (ar duomenų ir metodų rinkinys, kuris yra naudingų funkcijų tvarkyti duomenis pati) paragino Variabile_Condivisa struktūrizuota taip:






 visuomenės klasė Variabile_Condivisa







 {



   



 euro_dollaro plūdė;



   



 euro_sterlina plūdė;





   



 Variabile_Condivisa ()



  



 {



     



 euro_dollaro = 1;



     



 euro_sterlina = 1;



  



 }





   



 set_euro_dollaro negaliojančiu (float E_D) = {euro_dollaro E_D;}



   



 set_euro_sterlina negaliojančiu (float e_s) = {euro_sterlina e_s;}





   



 get_euro_dollaro float () {return euro_dollaro;}



   



 get_euro_sterlina float () {return euro_sterlina;}







 }



Dvi ataskaitas, ir kad euro_dollaro euro_sterlina, atstovaujančių valiutų kursas euras / doleris ir euro / sterlingų ir kad mes norime keistis informacija tarp įvairių programų (arba tarp daug temų). Metodais, sukurtais leidžia priskirti vertę, į šiuos duomenis (ir set_euro_dollaro set_euro_sterlina) ir perskaityti šias vertes (ir get_euro_dollaro get_euro_sterlina).

Tada mes identifikuoti konkrečiu būdu (Variabile_Condivisa), kuris yra vadinamas klasės konstruktorius yra įvykdytas ir kad kiekvieno Variabile_Condivisa kūrimą, šiuo atveju nustatant kintamųjų ir euro_dollaro euro_sterlina vertybės yra nustatytas 1.

Tada mes sukurti mūsų programoje Objekto tipas pavadintas var Variabile_Condivisa (klasei atstovauja subjektų, bendrų bruožų rinkinį, o objektas yra konkretus elementas, šis rinkinys, kuris gali būti pateikiami pagal programą ) tokiu būdu:






 Variabile_Condivisa Variabile_Condivisa var = nauji ();



Kaip mes galime užtikrinti, kad nėra jokių duomenų, bendras var valdymo problemas? "Java" kalba suteikia Raktinis (ar raktažodžius) sinchronizuojami, kurie priima bet kaip parametras objektas. Per sinchronizuoti, galite nustatyti, kaip parodyta pavyzdyje kodo blokas:





 sinchronizuoti (VAR)







 {



  



 / / Sinchronizuoti blokas kodo aptverti (VAR)

  





 }



Prieš atlikdami į sinchronizuoti blokas nurodymus, bet siūlai įgyja dėl kintamojo var užraktas, ar blokuoti visus toliau naudotis ta pačia blokas kodo, kol užraktas paleistas, arba tol, kol veikia visą bloką Pavyzdžiui kodą riboto klamrami.

Kitaip tariant, pirmasis sriegis (kurį mes įsivaizduoti paskambinti pirmiausia), kad atlieka sinchronizuoti ataskaita (VAR) iš tikrųjų sukuria barjerą, kuris užkerta kelią bet kokiai kitų siūlų vykdyti sinchronizuoti ataskaita (VAR) iki pirmojo nebaigė iš sinchronizuoti blokas kodo aptverti vykdymą. Šių blokų tada įdedamas instrukcijas skaityti ir rašyti bendras duomenis.

Tokiu būdu garantuojama, tarpusavio atskirties, kuri užtikrina, kad tik viena gija vienu metu gali prieiti prie bendrai kintamąjį. Reikia pažymėti, kad būtina atidžiai pasirinkti objekto perduodamas kaip parametras į sinchronizuojami. Ji turi būti objekto bendri visoms temas, kuriose norite sukurti tarpusavio atskirties mechanizmą, pavyzdžiui, kaip šiuo atveju, kintamasis norite skaityti ar redaguoti.

Įsivaizduokite, šiuo metu, kurį norite naudoti mūsų programą taip, kad temas, kad norite skaityti kintamojo var būti atidėtas vertę ir įvertinti rezultatus tik po pirmo atnaujinimo po jų prašymu. Įsivaizduokite, kad jūs norite nustatyti sinchronizavimo mechanizmas tarp skaitymo ir rašymo.

Tos pačios kategorijos ...
E-mokymasis
"Linux" (kurso) "Linux" (kurso)
Užbaigti vadovą, kad atviro kodo sistema. Nuo 49 €.
PHP (kurso) PHP (kurso)
Visas kursas sukurti dinaminius interneto svetainių. Nuo 49 €.
Ruby ir Ruby on Rails (kurso) Ruby ir Ruby on Rails (kurso)
Sukurti programinę įrangą ir interneto programų su Ruby ir RoR. Nuo 39 €.
Rėmėjų nuorodos