..


Sponsoroidut linkit

Management jaetun tiedon Java

Artikkelin kirjoittanut Damiano Verda
Sivu 1 2

Voimme ajatella jaettua tietoa kuten kaikki muut tietojenkäsittelylaitteet tehtävät altistuvat enemmän osapuolille. Kuvittele, esimerkiksi tallentaa numeerista arvoa esittämään euro / dollari. Meillä on ohjelma, joka tarkistaa aika ajoin, mitä valuuttakurssia ja päivitykset muuttujan arvo. Yksi tai useampia muita ohjelmia kuitenkin käyttää päivitetään tietojasi ylläpitääkseen valuuttakurssin muuntamista hinta.

Huomaa miten johto jaetun tässäkin yksinkertainen esimerkki, tarvitsevat erityistä huomiota. Kuvittele esimerkiksi, että vaikka ohjelma tarvitsee lukea valuuttakurssi muuntaa, on myös saanut toisen ohjelman pyynnön muuttaa kurssin itse.

Joka suoritetaan ensin? Mitkä valuuttakurssien muuntaminen tapahtuu? Ongelma, joissakin tapauksissa jopa hieman monimutkaisempi, voisi olla entistä vakavampia.

Kuvittele, että muuttuja korkoja ei alkeis mutta esimerkiksi koostuu joukosta tietoja. Se voi nyt suorittaa vain osittainen kirjoittaa, ja sitten seuraa lukemisen päättymisestä kirjallisesti. Liiketoimiin olisi silloin suoritetaan arvomaailma muuttui vain osittain, synnyttää merkityksettömiin tuloksiin ja siten hyväksyttävissä.

Olisiko tällainen ongelmia monien ohjelmointikielten tarjota erityisiä välineitä hallintaan yhteisten muuttujien. Tarkastelemme seuraavassa erityisesti tähän luokkaan ongelmia on käsitelty Java-ohjelmointikielellä, yksi eniten käytetty kaikkien.

Ensin on ymmärrettävä, miten voimme varmistaa, että vain yhden ohjelman kerralla, tai tarkemmin sanottuna vain yksi lanka kerrallaan (yksi lanka on perusosa prosessin tai ohjelman, toisin sanoen ohjelma voi koostua useita säikeitä, käyttää samanaikaisesti) voi käyttää jaettua muuttujaa. Mekanismi, jonka avulla voimme tarjota tätä takausta keskinäisen syrjäytymistä.

Keskinäinen poissulkeminen

Kuvittele kehittää luokan (tai joukko tietoja ja menetelmiä, jotka on käytännöllisiä toimintoja käsitellä tietoja itse) kutsutaan Variabile_Condivisa rakenne on seuraava:






 public class Variabile_Condivisa







 {



   



 euro_dollaro float;



   



 euro_sterlina float;





   



 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;}







 }



Kaksi lausumaa, ja että euro_dollaro euro_sterlina edustava valuuttakurssi euro / dollari ja euro / punta ja että haluamme jakaa tietoa keskenään useita ohjelmia (tai välillä useita säikeitä). Kehitetyt menetelmät mahdollistavat arvon määrittäminen nämä tiedot (ja set_euro_dollaro set_euro_sterlina) ja lukea nuo arvot (ja get_euro_dollaro get_euro_sterlina).

Sitten tunnistaa tietyn menetelmän (Variabile_Condivisa), jota kutsutaan luokan rakentajan on suoritettu ja että luominen kunkin Variabile_Condivisa, tässä tapauksessa asettamalla muuttujien arvot ja euro_dollaro euro_sterlina on asetettu 1.

Sitten luomme ohjelmamme esineen tyyppi nimeltä var Variabile_Condivisa (luokka edustaa joukko yhteisöihin yhteisiä piirteitä, kun taas objekti edustaa erityinen osa Tästä, johon voidaan viitata ohjelmassa ) näin:






 Variabile_Condivisa Variabile_Condivisa var = uusi ();



Kuten nyt voimme varmistaa, että ei ole ongelmia tietohallinnon yhteisten var? Java tarjoaa Avainsana (tai avainsanat) synkronoitu, joka hyväksyy minkä tahansa objektin parametrin. Kautta synkronoitu, voit määrittää, mikä käy ilmi esimerkiksi koodiosion:





 synkronoitu (var)







 {



  



 / / Synkronoitu koodiosion rajattu (var)

  





 }



Ennen ohjeita synkronoitu lohko, kaikki lanka hankkii lukko muuttujan var, tai estää kaikki edelleen käyttää samoja koodiosion kunnes lukko vapautuu, tai kunnes käynnissä koko korttelin esimerkki koodista erotettu aaltosulkeita.

Toisin sanoen ensimmäisen kierteen (jota kuvitella soittaa ensin), joka suorittaa synkronoitu lausuman (var) todella luo este, joka estää muita kierre suorittaa synkronoitu lausuman (var), kunnes ensimmäinen ei ole suorittanut toteuttaminen synkronoitu koodiosion rajattu. Näissä lohkot laitetaan sitten ohjeet lukea tai kirjoittaa jaettua tietoa.

Näin on taattu vastavuoroinen syrjäytyminen, jolla varmistetaan, että vain yksi lanka kerrallaan voi käyttää jaettua muuttujaa. Huomattakoon kuitenkin, että on tarpeen huolellisesti valita objekti välitetään parametrina synkronoitu. On esine yhteisiä kaikille viestiketjut, johon haluat luoda mekanismi keskinäisen syrjäytymistä, esimerkiksi kuten tässä tapauksessa, muuttuja haluat lukea tai muokata.

Kuvittele, tässä vaiheessa, haluatko asettaa ohjelmamme siten, että viestiketjut, jotka haluavat lukea muuttujan arvo var olla pitoon ja arvioida tuloksia vasta ensimmäinen päivitys seuraavan pyynnöstä. Kuvittele, että haluat määrittää synkronoinnin mekanismi välillä lukemiseen ja kirjoittamiseen.

Samassa luokassa ...
E-Learning
Linux (kurssi) Linux (kurssi)
Täydellinen opas avoimen lähdekoodin järjestelmä. Alkaen 49 €.
PHP (kurssi) PHP (kurssi)
Täysi tietenkin luoda dynaamisia Web-sivustoja. Alkaen 49 €.
Ruby ja Ruby on Rails (kurssi) Ruby ja Ruby on Rails (kurssi)
Luo ohjelmistojen ja web-sovellusten kanssa Ruby ja RoR. Alkaen 39 €.
Sponsoroidut linkit