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
synchronizedprimeni na nestatičnu metodu, zaključavanje se dešava na objektu (this) sa kojeg se metoda poziva. - Ako se
synchronizedprimeni 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 objektuobj.
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
}
}
}