Sobes.tech
Junior — Middle

Na jakém objektu je prováděn mechanismus blokování při použití klíčového slova synchronized?

sobes.tech AI

Odpověď od AI

V jazyce Java závisí mechanismus zámku při použití klíčového slova synchronized na kontext:

  • Pokud se synchronized použije na nestatickou metodu, zámek se vztahuje na objekt (this), na kterém je metoda volána.
  • Pokud se synchronized použije na statickou metodu, zámek se vztahuje na objekt třídy (Class), tedy na samotnou třídu.
  • Pokud je použit blok synchronized(obj), zámek se vztahuje na objekt obj.

Příklad:

public class Example {
    public synchronized void instanceMethod() {
        // zámek na this
    }

    public static synchronized void staticMethod() {
        // zámek na Example.class
    }

    public void blockMethod() {
        Object lock = new Object();
        synchronized(lock) {
            // zámek na lock
        }
    }
}