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. |
Haben Sie sich jemals gefragt, warum die Begriffe Sozialismus und Kommunismus oft in einem Atemzug…
Die Welt der Flaggensymbolik Haben Sie sich schon einmal die Zeit genommen, die Geschichte hinter…
Haben Sie schon einmal ein Passwort vergessen? Sicher, das ist uns allen schon passiert. Deshalb…
Der Hauptunterschied zwischen einem 4-Takt-Motor und einem 2-Takt-Motor besteht darin, dass ein 4-Takt-Motor vier Stufen…
Haben Sie sich jemals gefragt, ob es tatsächlich einen Unterschied zwischen japanischen und chinesischen Augen…
Abgeltungssteuer: Arten, Regelungen und wichtige Informationen zu Kapitalerträgen Die Abgeltungssteuer ist eine der zentralen Steuerarten…