Sobes.tech
Junior — Middle

Pe ce obiect se realizează mecanismul de blocare atunci când se utilizează cuvântul cheie synchronized?

sobes.tech AI

Răspuns de la AI

În Java, atunci când se utilizează cuvântul cheie synchronized, mecanismul de blocare depinde de context:

  • Dacă synchronized se aplică unei metode non-staționale, blocarea are loc pe obiectul (this) de pe care se apelează metoda.
  • Dacă synchronized se aplică unei metode statice, blocarea are loc pe obiectul clasei (Class), adică pe clasă însăși.
  • Dacă se folosește un bloc synchronized(obj), blocarea are loc pe obiectul obj.

Exemplu:

public class Example {
    public synchronized void instanceMethod() {
        // blocare pe this
    }

    public static synchronized void staticMethod() {
        // blocare pe Example.class
    }

    public void blockMethod() {
        Object lock = new Object();
        synchronized(lock) {
            // blocare pe lock
        }
    }
}