..


Sponsored Links

Management von gemeinsam genutzten Daten in Java

Artikel durch schriftliche Damiano Verda
Seite 1 von 2

Wir können von einer gemeinsam genutzten Daten wie jede andere Informationsverarbeitung Aufgaben an mehrere Parteien ausgesetzt sein zu denken. Stellen Sie sich vor, zum Beispiel, speichern einen numerischen Wert, der die Euro / Dollar. Wir haben ein Programm, das in regelmäßigen Abständen überprüft, was den Wechselkurs und aktualisiert den Wert der Variablen. Ein oder mehrere andere Programme, aber verwenden die aktualisierten Informationen auf den Wechselkurs Wandlungspreis zu betreiben.

Beachten Sie, wie die Verwaltung von einer gemeinsamen, auch in diesem einfachen Beispiel, bedürfen besonderer Aufmerksamkeit. Stellen Sie sich zum Beispiel, dass, während eine Anwendung benötigt, um den Wechselkurs zu lesen, um zu konvertieren, ist auch von einem anderen Programm, eine Anfrage an den Wechselkurs ändert sich erhalten hat.

Was ist zuerst ausgeführt? Welcher Wechselkurs Umrechnung erfolgt? Das Problem, in einigen Fällen sogar etwas komplexer, könnte sogar noch schwerer.

Stellen Sie sich vor, dass die Variable von Interesse ist nicht elementar, sondern zum Beispiel besteht aus einer Menge von Daten. Es kann jetzt nur Teilabschreibung durchgeführt werden, und dann durch eine Lesung aus dem Abschluss des schriftlichen gefolgt. Die Transaktionen würden dann mit einer Reihe von Werten verändert nur teilweise durchgeführt werden, was zu sinnlosen Ergebnissen und daher nicht akzeptabel.

Angesichts der Existenz dieser Art von Problemen viele Programmiersprachen bieten spezielle Tools für die Verwaltung von freigegebenen Variablen. Wir unten zu untersuchen, insbesondere, da diese Kategorie von Problemen in der Programmiersprache Java, einer der am meisten verwendeten gehandhabt wird.

Als erstes müssen Sie verstehen, wie wir sicherstellen können, dass nur ein Programm auf einmal, oder genauer gesagt nur ein Thread zu einem Zeitpunkt (ein Thread ist die grundlegende Komponente eines Prozesses oder Programms, in anderen Worten: ein Programm von mehreren Threads bestehen kann, gleichzeitig laufen) kann eine gemeinsame Variable zugreifen. Der Mechanismus, der uns auf diese Garantie anbieten können heißt gegenseitigen Ausschluss.

Gegenseitigen Ausschluss

Stellen Sie sich vor der Entwicklung einer Klasse (oder einer Reihe von Daten und Methoden, die nützliche Funktionen, die Daten selbst verarbeiten ist) genannt Variabile_Condivisa wie folgt aufgebaut:






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







 }



Die beiden Aussagen, und dass euro_dollaro euro_sterlina, was den Wechselkurs Euro / Dollar und Euro / Pfund und dass wir wollen, um Informationen zwischen mehreren Programmen (oder zwischen mehreren Threads) zu teilen. Die entwickelten Methoden ermöglichen es Ihnen, einen Wert auf diese Daten (und set_euro_dollaro set_euro_sterlina) zuordnen und lesen Sie diese Werte (und get_euro_dollaro get_euro_sterlina).

Dann ermitteln wir eine bestimmte Methode (Variabile_Condivisa), die als Konstruktor der Klasse ausgeführt wird und dass die Schaffung eines jeden Variabile_Condivisa, in diesem Fall, indem die Werte der Variablen und euro_dollaro euro_sterlina auf 1 gesetzt.

Dann haben wir in unserem Programm ein Objekt mit dem Namen var Variabile_Condivisa (die Klasse repräsentiert eine Menge von Entitäten mit gemeinsamen Merkmalen, während ein Objekt repräsentiert ein bestimmtes Element dieser Menge, die im Rahmen des Programms verwiesen werden kann ) auf diese Weise:






 Variabile_Condivisa Variabile_Condivisa var = new ();



Wie können wir nun sicherstellen, dass es keine Probleme bei der Verwaltung von Daten gemeinsam var? Die Sprache Java bietet das Schlüsselwort (oder Stichworte) synchronisiert, die ein beliebiges Objekt als Parameter akzeptiert. Durch synchronisiert, können Sie festlegen, wie in dem gezeigten Beispiel der Code-Block:





 synchronisiert (var)







 {



  



 / / Code-Block getrennt (var) Synchronized

  





 }



Bevor Sie den Anweisungen in der synchronisierten Block, erwirbt jeder Thread die Sperre auf die Variable var oder blockieren alle weiteren Zugang zu den gleichen Code-Block, bis die Sperre aufgehoben wird, oder bis nach der Ausführung des gesamten Blocks Beispiel-Code getrennt von geschweiften Klammern.

In anderen Worten, der erste Thread (die wir um das erste Gespräch vorstellen), dass die synchronisierte und Verlustrechnung (var) führt tatsächlich schafft eine Barriere, die einem anderen Thread verhindert, die synchronisiert und Verlustrechnung (var) bis zum ersten Ausführung noch nicht abgeschlossen die Durchführung der synchronisierten Codeblock begrenzt. In diesen Blöcken werden dann eingesetzt Anweisungen lesen und schreiben gemeinsam genutzten Daten.

Auf diese Weise ist die gegenseitige Ausgrenzung, was bedeutet, dass nur ein Thread zu einem Zeitpunkt, kann eine gemeinsame Variable zugreifen sorgt garantiert. Es sollte jedoch beachtet werden, dass es notwendig ist, sorgfältig zu wählen das Objekt als Parameter an synchronisiert übergeben werden. Es muss ein Objekt für alle die Fäden in dem Sie einen Mechanismus für die gegenseitige Ausgrenzung, zum Beispiel, wie in diesem Fall wird die Variable, die Sie wollen, lesen oder bearbeiten zu schaffen.

Stellen Sie sich vor, an dieser Stelle, möchten Sie unser Programm so eingestellt, dass die Fäden, die den Wert der Variablen var auf Eis gelegt werden gelesen und die Ergebnisse erst nach dem ersten Update nach ihrer Anfrage wollen. Stellen Sie sich vor, dass Sie ein Synchronisations-Mechanismus zwischen Lesen und Schreiben zu definieren wollen.

In der selben Kategorie ...
E-Learning
Linux (Kurs) Linux (Kurs)
Ein vollständiger Reiseführer von Open-Source-System. Von 49 €.
PHP (Kurs) PHP (Kurs)
Vollständige natürlich für die Erstellung dynamischer Websites. Von 49 €.
Ruby und Ruby on Rails (Kurs) Ruby und Ruby on Rails (Kurs)
Neues Software-und Web-Anwendungen mit Ruby und RoR. Von 39 €.
Sponsored Links