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ă
synchronizedse aplică unei metode non-staționale, blocarea are loc pe obiectul (this) de pe care se apelează metoda. - Dacă
synchronizedse 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 obiectulobj.
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
}
}
}