Sobes.tech
Junior — Middle

Millisel objektil toimub lukustamise mehhanism, kui kasutatakse synchronized märksõna?

sobes.tech AI

Vastus AI-lt

Java-s, kasutades märksõna synchronized, lukustamise mehhanism sõltub kontekstist:

  • Kui synchronized rakendatakse mitte-staatilisele meetodile, toimub lukustamine objekti (this) peal, millelt meetod kutsutakse.
  • Kui synchronized rakendatakse staatilisele meetodile, toimub lukustamine klassi objekti (Class) peal, ehkki klass ise.
  • Kui kasutatakse synchronized(obj) plokki, toimub lukustamine objekti obj peal.

Näide:

public class Example {
    public synchronized void instanceMethod() {
        // lukustamine `this` peal
    }

    public static synchronized void staticMethod() {
        // lukustamine `Example.class` peal
    }

    public void blockMethod() {
        Object lock = new Object();
        synchronized(lock) {
            // lukustamine `lock` peal
        }
    }
}