Sobes.tech
Junior — Middle

Kokio objekto yra vykdomas užrakinimo mechanizmas naudojant synchronized raktažodį?

sobes.tech AI

Atsakymas iš AI

Java kalbant apie synchronized raktažodį, blokavimo mechanizmas priklauso nuo konteksto:

  • Jei synchronized taikomas nestatinės metodo, blokavimas vyksta ant objekto (this), iš kurio kviečiama metodas.
  • Jei synchronized taikomas statinės metodo, blokavimas vyksta ant klasės objekto (Class), tai yra pačios klasės.
  • Jei naudojamas synchronized(obj) blokas, blokavimas vyksta ant objekto obj.

Pavyzdys:

public class Example {
    public synchronized void instanceMethod() {
        // blokavimas ant this
    }

    public static synchronized void staticMethod() {
        // blokavimas ant Example.class
    }

    public void blockMethod() {
        Object lock = new Object();
        synchronized(lock) {
            // blokavimas ant lock
        }
    }
}