Sobes.tech
Junior — Middle

Na kom objektu se vrši mehanizam zaključavanja kada se koristi ključna reč synchronized?

sobes.tech АИ

Одговор од АИ

U Javi, kada koristite ključnu reč synchronized, mehanizam zaključavanja zavisi od konteksta:

  • Ako se synchronized primeni na nestatičnu metodu, zaključavanje se dešava na objektu (this) sa kojeg se metoda poziva.
  • Ako se synchronized primeni na statičnu metodu, zaključavanje se dešava na objektu klase (Class), tj. na samoj klasi.
  • Ako se koristi blok synchronized(obj), zaključavanje se dešava na objektu obj.

Primer:

public class Example {
    public synchronized void instanceMethod() {
        // zaključavanje na this
    }

    public static synchronized void staticMethod() {
        // zaključavanje na Example.class
    }

    public void blockMethod() {
        Object lock = new Object();
        synchronized(lock) {
            // zaključavanje na lock
        }
    }
}