..


Sponzorirani linkovi

Upravljanje zajedničkim podataka u Java

Članak je napisao Damiano Verda
Stranica 1 od 2

Možemo razmišljati o zajedničkom podataka kao i bilo koje druge informacije prilagodbom biti izloženi na više stranaka. Zamislite, na primjer, trgovina brojčana vrijednost koja predstavlja eura / dolara. Imamo program koji povremeno provjerava što je tečaj i ažurira vrijednost varijable. Jedna ili više drugih programa, međutim, koristit će ažurirane informacije za rad pretvorbe cijena tečaja.

Primijetiti kako se upravljanje zajedničkim, čak iu ovom jednostavnom primjeru, treba posebnu pozornost. Zamislite na primjer da iako aplikacija treba pročitati tečaja pretvoriti, također je dobio neki drugi program, zahtjev za promjenu tečaja sama.

Koji se izvršava prvi? Koji tečaj pretvorbe je učinio? Problema, čak u nekim slučajevima nešto složeniji, bi mogao biti još teže.

Zamislite činjenicu da varijabla kamatna nije osnovna, ali, na primjer, sastoji se od skupa podataka. Sada se može obavljati samo djelomično pisati, a zatim slijede čitanja od završetka pisanja. Transakcija bi tada biti izvedena sa skupom vrijednosti promijeniti samo djelomično, čime se popeti na besmislene rezultate i stoga neprihvatljiv.

S obzirom na postojanje ove vrste problema mnogih programskih jezika pružaju specifične alate za upravljanje zajedničkih varijabli. Mi smo ispitati u nastavku osobito u ovoj kategoriji problema se barata u Java programski jezik, jedan od najvažnijih koristi od svih.

Najprije je potrebno shvatiti kako možemo osigurati da samo jedan program na jednom, ili točnije samo jedna nit u isto vrijeme (jedan nit je osnovna komponenta procesa ili programa, drugim riječima program može se sastojati od više niti, istovremeno) mogu pristupiti zajednički varijable. Mehanizam koji omogućuje nam da nudimo ovo jamstvo se zove međusobne isključivosti.

Međusobno isključivanje

Zamislite razvoju klase (ili skup podataka i metoda, koja je korisna funkcija za obradu podataka sam) zove Variabile_Condivisa strukturiran na sljedeći način:






 public class Variabile_Condivisa







 {



   



 euro_dollaro plovak;



   



 euro_sterlina plovak;





   



 Variabile_Condivisa ()



  



 {



     



 euro_dollaro = 1;



     



 euro_sterlina = 1;



  



 }





   



 set_euro_dollaro void (float e_d) = {euro_dollaro e_d;}



   



 set_euro_sterlina void (float e_s) = {euro_sterlina e_s;}





   



 get_euro_dollaro float () {return euro_dollaro;}



   



 get_euro_sterlina float () {return euro_sterlina;}







 }



Dvije tvrdnje, a da euro_dollaro euro_sterlina, predstavlja euru / dolara i eura / sterlinga i da želimo podijeliti informacija između više programa (ili između više niti). Metode razvijene vam omogućuju da dodijelite vrijednost tih podataka (i set_euro_dollaro set_euro_sterlina) i čitati te vrijednosti (i get_euro_dollaro get_euro_sterlina).

Onda smo identificirati određeni način (Variabile_Condivisa), koji se zove klasa konstruktor izvodi i da je stvaranje svake Variabile_Condivisa, u ovom slučaju postavljanjem vrijednosti varijabli i euro_dollaro euro_sterlina su postavljena na 1.

Zatim smo stvorili u našem programu tip objekta pod nazivom var Variabile_Condivisa (klasa predstavlja skup subjekata sa zajedničkim karakteristikama, dok je objekt predstavlja određeni element ovog skupa, koji se može navedene u programu ) na ovaj način:






 Variabile_Condivisa Variabile_Condivisa var = new ();



Kao što smo sada mogu osigurati da ne postoje problemi u upravljanju podacima koje dijele var? Java jeziku pruža ključnu riječ (ili riječi) sinkroniziran, koja prihvaća bilo koji predmet kao parametar. Kroz sinkronizirani, možete definirati, kao što je prikazano u primjeru, blok koda:





 sinkroniziran (var)







 {



  



 / / Sinkronizirani blok koda razgraničeni (var)

  





 }



Prije upute sinkronizirani blok, bilo nit stekne zaključavanje na varijablu var, ili blokirati sve daljnji pristup isti blok koda dok zaključavanje je izdana, ili tek nakon pokretanja cijelog bloka primjer koda omeđena vitičastim zagradama.

Drugim riječima, prvi nit (što možemo zamisliti da prvi poziv) da obavlja sinkronizirane izjave (var) zapravo stvara barijeru koja sprječava bilo koji drugi thread za izvršavanje sinkronizirane izjave (var) dok prvi nije završen izvršenje sinkronizirani blok koda razgraničena. U tim blokovi tada su umetnute upute čitati ili pisati dijeli podataka.

Na taj način je zajamčen međusobne isključivosti, koja osigurava da se samo jedna nit u isto vrijeme mogu pristupiti zajednički varijable. Valja napomenuti, međutim, da je potrebno pažljivo odabrati objekt biti donesen kao parametar sinkronizirani. To mora biti objekt zajednički za sve teme u kojima želite stvoriti mehanizam za međusobne isključivosti, na primjer, kao u ovom slučaju, varijabla želite pročitati ili editirati.

Zamislite, u ovom trenutku želite postaviti našem programu, tako da niti koje želite pročitati vrijednost varijable var da se stavi na čekanje i vrednovati rezultate tek nakon prvog ažurirati na njihov zahtjev. Zamislite da želite definirati mehanizam sinkronizacije između čitanja i pisanja.

U istoj kategoriji ...
E-učenje
Linux (tečaj) Linux (tečaj)
Kompletan vodič za open-source sustava. Od 49 €.
PHP (tečaj) PHP (tečaj)
Cijeli tečaj za izradu dinamičkih Web stranica. Od 49 €.
Ruby i Ruby na šina (tečaj) Ruby i Ruby na šina (tečaj)
Napravite softver i web aplikacija uz Ruby i ROR. Od 39 €.
Sponzorirani linkovi