Sobes.tech
Junior — Middle

Auf welchem Objekt erfolgt der Sperrmechanismus bei Verwendung des Schlüsselworts synchronized?

sobes.tech KI

Antwort von AI

In Java hängt der Sperrmechanismus bei Verwendung des Schlüsselworts synchronized vom Kontext ab:

  • Wenn synchronized auf eine nicht-statische Methode angewendet wird, erfolgt die Sperrung auf dem Objekt (this), auf dem die Methode aufgerufen wird.
  • Wenn synchronized auf eine statische Methode angewendet wird, erfolgt die Sperrung auf dem Klassenobjekt (Class), also auf der Klasse selbst.
  • Wenn ein Block synchronized(obj) verwendet wird, erfolgt die Sperrung auf dem Objekt obj.

Beispiel:

public class Example {
    public synchronized void instanceMethod() {
        // Sperrung auf this
    }

    public static synchronized void staticMethod() {
        // Sperrung auf Example.class
    }

    public void blockMethod() {
        Object lock = new Object();
        synchronized(lock) {
            // Sperrung auf lock
        }
    }
}