Contents
Synchronisation ist die Möglichkeit, den Zugriff mehrerer Threads zu steuern, um Ressourcen gemeinsam zu nutzen. Ohne Synchronisation ist es für einen Thread möglich, eine gemeinsam genutzte Ressource zu ändern, während ein anderer Thread gerade diese Ressource verwendet oder aktualisiert.
In der Java-Sprache gibt es zwei Synchronisationssyntax. Die praktischen Unterschiede liegen im Kontrollumfang und im Monitor. Bei einem synchronisierten Verfahren wird die Sperre für die Dauer des gesamten Verfahrens erhalten. Bei synchronisierten Blöcken können Sie genau festlegen, wann die Sperre benötigt wird.
Grundsätzlich sind synchronisierte Blöcke allgemeiner und synchronisierte Methoden können umgeschrieben werden, um synchronisierte Blöcke zu verwenden. Wenn Sie also das gesamte Objekt sperren möchten, verwenden Sie eine synchronisierte Methode. Wenn Sie andere Teile des Objekts für andere Threads zugänglich halten möchten, verwenden Sie den synchronisierten Block.
Wenn Sie das gesperrte Objekt sorgfältig auswählen, führen synchronisierte Blöcke zu weniger Konflikten, da das gesamte Objekt/die gesamte Klasse nicht blockiert wird. Dies gilt ähnlich für statische Methoden, eine synchronisierte statische Methode erwirbt eine Sperre im gesamten Klassenobjekt, während ein synchronisierter Block innerhalb einer statischen Methode eine Sperre im Objekt zwischen Klammern erwirbt.
Der Hauptunterschied zwischen synchronisiertem Block und synchronisierter Methode besteht darin, dass synchronisierter Block den Code innerhalb des Blocks sperrt, während synchronisierte Methode das gesamte Objekt sperrt.
SYNCHRONISIERTE METHODE | SYNCHRONISIERTER BLOCK |
Die synchronisierte Methode erwirbt eine Sperre für das gesamte Objekt. Dies bedeutet, dass kein anderer Thread eine synchronisierte Methode im gesamten Objekt verwenden kann, während die Methode von einem Thread ausgeführt wird. | Synchronisierte Blöcke erhalten eine Sperre im Objekt zwischen Klammern nach dem synchronisierten Schlüsselwort. Das bedeutet, dass kein anderer Thread eine Sperre für das gesperrte Objekt erlangen kann, bis der synchronisierte Block beendet wird. |
Eine synchronisierte Methode verwendet den Methodenempfänger als Sperre, ‘this’ für nicht statische Methoden und die einschließende Klasse für statische Methoden. | Synchronisierte Blöcke verwenden den Ausdruck als Sperre. |
Die synchronisierte Methode sperrt immer entweder das aktuelle Objekt, das durch eine Sperre auf Klassenebene dargestellt wird, wenn es sich um eine statische synchronisierte Methode handelt. | Synchronisierte Blöcke bieten eine granulare Kontrolle über die Sperre, da Sie jede beliebige Sperre verwenden können, um einen gegenseitigen Ausschluss für kritischen Abschnittscode bereitzustellen. |
Im Fall einer synchronisierten Methode wird die Sperre vom Thread erworben, wenn er die Methode betritt, und freigegeben, wenn er die Methode verlässt, entweder normal oder durch Auslösen von Exception. | Im Falle eines synchronisierten Blocks erhält der Thread eine Sperre, wenn sie in den synchronisierten Block eintreten, und wird freigegeben, wenn sie den synchronisierten Block verlassen. |
Bei synchronisierten Methoden wird die Sperre im gesamten Methodenbereich aufrechterhalten. | Im synchronisierten Block wird die Sperre nur während des Blockumfangs gehalten, der auch als kritischer Abschnitt bezeichnet wird. |
Eine synchronisierte statische Methode erwirbt eine Sperre im gesamten Klassenobjekt. | Ein synchronisierter Block innerhalb einer statischen Methode erhält eine Sperre im Objekt zwischen Klammern. |
Fühlen Sie sich oft gestresst, verspannt und auf der Suche nach einer Lösung für Ihr…
Haben Sie sich jemals gefragt, warum Ihr Morgenkaffee anders schmeckt als der Espresso aus Ihrem…
Einleitung: Die Begriffe "Freeway" und "Highway" werden oft synonym verwendet, aber es gibt subtile Unterschiede…
Burritos und Enchiladas sind zwei beliebte Gerichte der mexikanischen Küche, die oft miteinander verwechselt werden.…
In der Zellbiologie spielen Replikation und Transkription entscheidende Rollen im genetischen Prozess. Beide sind Mechanismen,…
Osmose und Diffusion sind zwei grundlegende Prozesse, die in der Zellbiologie und Chemie eine entscheidende…