Zum gleichzeitigen Zugriff auf eine Methode in Java zu verhindern

April 12

Moderne Prozessoren mit mehreren Kernen können gleichzeitige Java-Anwendungen nutzen. Eine gleichzeitige Anwendung ist eine, die mehrere Vorgänge gleichzeitig ausgeführt wird. Parallelität stellt einzigartige Herausforderungen, die angegangen werden müssen, um Probleme zu vermeiden. Ein großes Problem tritt auf, wenn zwei Threads der Ausführung jeder dieselbe Methode gleichzeitig zugreifen. Ein Thread kann einen anderen stören und machen die Daten unzuverlässig. Um dieses Problem zu steuern, können Sie eine Methode mit der Synchronisierungsfunktion Java gleichzeitigen Zugriff verhindern.

Anweisungen

1 Laden Sie die NetBeans-IDE, indem Sie auf das Programmsymbol. Wenn das Programm geladen wird, navigieren Sie zu "Neu/New Project" und wählen Sie aus "Java-Anwendung" aus der Liste auf der rechten Seite des Bildschirms. Eine neue Quellcodedatei wird in der NetBeans-Text-Editor angezeigt. Die Quellcodedatei enthält eine leere main-Funktion.

2 Deklarieren Sie eine statische Variable namens x schriftlich Folgendes innerhalb der main-Funktion im Quellcode: statische Int X = 0;

3 Erstellen Sie eine synchronisierte Methode, indem der Methodendeklaration "synchronisierten" Stichwort hinzufügen. Eine synchronisierte Methode kann nur von einem Thread gleichzeitig zugegriffen werden und verhindert so Dateninkonsistenzen. Deklarieren Sie eine Methode namens "MethodName" synchronisiert, schreiben Sie die folgende Deklaration in der Quellcodedatei: öffentliche synchronisiert methodName()

4 Integer zu erhöhen, indem Sie die folgende Anweisung in den geschweiften Klammern der Methode schreiben: Rückkehr x++;

5 Die synchronisierte Methode aufrufen. Um zu verstehen was synchronisieren vollbringt, zuerst angenommen Sie, die Methode nicht synchronisiert wurde. Wenn zwei parallele Threads gleichzeitig die Methode aufrufen, wird jeweils die Variable X erhöht. Da x bei 0 beginnt, ist das Ergebnis einer Operation Inkrement werden X = 1. Dies ist ein Problem, weil die Methode wurde zweimal aufgerufen, und deshalb sollte X 2 gleich ist. Da "MethodName" synchronisiert wird, wird nur einer der zwei parallelen Threads die Methode eingeben. Ein Thread "MethodName," Inkrement X und Ausfahrt. Dadurch wird den zweiten Thread eingeben "MethodName" und die zweite Inkrement-Operation durchführen. Mit der synchronized-Schlüsselwort ruft zwei "MethodName" Ergebnis in x wird gleich 2. Aufruf einer Methode kann wie folgt geschrieben werden: methodName();