..


Linki sponsorowane

Zarządzanie danych udostępnionych w Java

Artykuł napisany przez Damian Verda
Strona 1 z 2

Możemy myśleć o wspólnych danych takich ekspozycji na działalność przetwarzania informacji z kilku części. Wyobraźmy sobie na przykład, przechowują numeryczna wartość reprezentująca euro / dolara. Mamy program, który okresowo sprawdza, co kursu i aktualizuje wartość zmiennej. Jeden lub więcej innych programów, jednak będzie korzystać z aktualizowanych informacji do obsługi kursu cena konwersji.

Zauważ, zarządzania wspólnego, nawet w tym prostym przykładzie, wymaga szczególnej uwagi. Wyobraźmy sobie na przykład, że podczas gdy aplikacja wymaga odczytu kursu konwersji, jest także przyjęty przez inny program, wniosek o zmianę kursu siebie.

Który jest wykonywany w pierwszej kolejności? Których zmiana kursu walutowego jest zrobione? Problem, nawet w niektórych przypadkach nieco bardziej skomplikowane, może być jeszcze bardziej dotkliwe.

Wyobraź sobie, że interesująca nas zmienna nie jest podstawowym, ale na przykład, składa się z zestawu danych. To może być teraz wykonywane tylko częściowe umorzenie, a następnie przez odczyt od ukończenia pisania. Transakcje będą następnie wykonywane z zestawem wartości zmieniane tylko częściowo, co powoduje bezsensowne wyniki i dlatego nie do przyjęcia.

Biorąc pod uwagę istnienie tego rodzaju problemy wielu języków programowania dostarczają konkretnych narzędzi do zarządzania wspólnych zmiennych. Omówimy poniżej, w szczególności w tej kategorii problemów polega na języku programowania Java, jeden z najczęściej używanych wszystkich.

Najpierw trzeba zrozumieć, jak możemy zapewnić, że tylko jeden program na raz, a dokładniej tylko jeden wątek na raz ( gwint jest podstawowym elementem procesu lub programu, innymi słowy, program może składać się z wielu wątków, uruchomić jednocześnie) mają dostęp do wspólnej zmiennej. Mechanizm, który pozwala nam zaoferować to gwarancja jest wzajemne wykluczanie.

Wzajemne wykluczanie

Wyobraź sobie, rozwijających klasy (lub zestaw danych i metod, to jest przydatne funkcje do przetwarzania danych się) o nazwie Variabile_Condivisa następującą strukturę:






 public class Variabile_Condivisa







 {



   



 euro_dollaro float;



   



 euro_sterlina float;





   



 Variabile_Condivisa ()



  



 {



     



 euro_dollaro = 1;



     



 euro_sterlina = 1;



  



 }





   



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



   



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





   



 pływak get_euro_dollaro () {return euro_dollaro;}



   



 pływak get_euro_sterlina () {return euro_sterlina;}







 }



Te dwa oświadczenia i że euro_dollaro euro_sterlina, reprezentujących kursu wymiany euro / dolar i euro / funt i chciałbyś podzielić informacje między kilka programów (lub pomiędzy wieloma wątkami). Opracowane metody pozwalają przypisać wartość do tych danych (i set_euro_dollaro set_euro_sterlina) i czytać te wartości (i get_euro_dollaro get_euro_sterlina).

Wtedy możemy zidentyfikować konkretnej metody (Variabile_Condivisa), który jest nazywany konstruktora klasy jest wykonywany i że stworzenie każdego Variabile_Condivisa, w tym przypadku poprzez ustawienie wartości zmiennych i euro_dollaro euro_sterlina być ustawiony na 1.

Następnie wygenerować w naszym programie typu obiekt o nazwie var Variabile_Condivisa (klasy reprezentuje zestaw podmiotów o wspólnych cechach, a obiekt jest szczególnym elementem tego zestawu, który można odwoływać się w ramach programu ) tak:






 Variabile_Condivisa Variabile_Condivisa var = new ();



Jak możemy zapewnić, że w tym momencie nie ma żadnych problemów w zarządzaniu danych udostępnianych w var? Język Java oferuje słowa kluczowego (lub słów kluczowych) zsynchronizowane, który przyjmuje dowolny obiekt jako parametr. Poprzez zsynchronizowane, można określić, jak pokazano w przykładzie, blok kodu:





 zsynchronizowane (var)







 {



  



 / / Synchronizacja bloku ograniczony kod (zmienna)

  





 }



Przed przystąpieniem do wykonywania instrukcji w bloku synchronizacji, każdy wątek nabywa zamek na zmiennej var, lub zablokować dalszy dostęp do tego samego bloku kodu, aż blokada zostanie zwolniona, lub do czasu po uruchomieniu całego bloku w ograniczony kod przykład nawiasy klamrowe.

Innymi słowy, pierwszy wątek (który możemy sobie wyobrazić, aby połączyć pierwszy), który wykonuje zsynchronizowane oświadczenie (var) faktycznie tworzy barierę, która zapobiega inny wątek, aby wykonać synchronizację oświadczenie (var), aż do pierwszego nie zakończył wykonanie synchronizacji bloku ograniczony kodu. W tych bloków są następnie umieszczane instrukcje odczytu lub zapisu danych udostępnionych.

W ten sposób zagwarantowane jest, wzajemnego wykluczania, który zapewnia, że ​​tylko jeden wątek w danej chwili mają dostęp do wspólnej zmiennej. Należy zauważyć jednak, że konieczne jest starannie wybrać obiekt który ma zostać przekazany jako parametr do synchronizacji. Musi być ze względu na wspólne przedmiot wszystkie posty, w których chcesz utworzyć mechanizm wzajemnego wykluczania, na przykład, jak w tym przypadku, sama zmienna, którą chcesz odczytać lub zmodyfikować.

Wyobraź sobie, że w tym momencie, dla którego chcesz ustawić nasz program tak, aby tematy, które chcą odczytać wartość zmiennej var zostanie zawieszone i oceny wyników po pierwszej aktualizacji po ich wniosek. Wyobraź sobie, że chcemy zdefiniować mechanizm synchronizacji między czytania i pisania.

W tej samej kategorii ...
E-Learning
Linux (Kurs) Linux (Kurs)
Kompletny przewodnik po systemie open-source. Począwszy od 49 €.
PHP (Kurs) PHP (Kurs)
Pełny kurs tworzenia dynamicznych stron internetowych. Począwszy od 49 €.
Ruby i Ruby On Rails (Kurs) Ruby i Ruby On Rails (Kurs)
Tworzenie oprogramowania i aplikacji webowych w języku Ruby RoR. Począwszy od 39 €.
Linki sponsorowane