Sobes.tech
Junior — Middle

Na jakim obiekcie realizowany jest mechanizm blokady przy użyciu słowa kluczowego synchronized?

sobes.tech AI

Odpowiedź od AI

W Javie, użycie słowa kluczowego synchronized zależy od kontekstu:

  • Jeśli synchronized jest stosowane do metody niestatycznej, blokada odbywa się na obiekcie (this), na którym wywoływana jest metoda.
  • Jeśli synchronized jest stosowane do metody statycznej, blokada odbywa się na obiekcie klasy (Class), czyli na samej klasie.
  • Jeśli używany jest blok synchronized(obj), blokada odbywa się na obiekcie obj.

Przykład:

public class Example {
    public synchronized void instanceMethod() {
        // blokada na this
    }

    public static synchronized void staticMethod() {
        // blokada na Example.class
    }

    public void blockMethod() {
        Object lock = new Object();
        synchronized(lock) {
            // blokada na lock
        }
    }
}