Sobes.tech
Junior — Middle

Na akom objekte sa vykonáva mechanizmus blokovania pri použití kľúčového slova synchronized?

sobes.tech AI

Odpoveď od AI

V Jave, keď používate kľúčové slovo synchronized, mechanizmus blokovania závisí od kontextu:

  • Ak sa synchronized aplikuje na nestatickú metódu, blokovanie prebieha na objekte (this), na ktorom je metóda volaná.
  • Ak sa synchronized aplikuje na statickú metódu, blokovanie prebieha na objekte triedy (Class), teda na samotnej triede.
  • Ak sa používa blok synchronized(obj), blokovanie prebieha na objekte obj.

Príklad:

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

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

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