Junior — Middle
На кой обект се осъществява механизмът за блокиране при използване на ключовата дума synchronized?
sobes.tech AI
Отговор от AI
В Java, когато използвате ключовата дума synchronized, механизмът за заключване зависи от контекста:
- Ако
synchronizedсе прилага към нестатичен метод, заключването се извършва върху обекта (this), на който се извиква методът. - Ако
synchronizedсе прилага към статичен метод, заключването се извършва върху обекта на класа (Class), тоест върху самия клас. - Ако се използва блок
synchronized(obj), заключването се извършва върху обектаobj.
Пример:
public class Example {
public synchronized void instanceMethod() {
// заключване върху this
}
public static synchronized void staticMethod() {
// заключване върху Example.class
}
public void blockMethod() {
Object lock = new Object();
synchronized(lock) {
// заключване върху lock
}
}
}