Back to questions
Junior — Middle
106
При использовании ключевого слова synchronized, на каком объекте осуществляется механизм блокировки?
Answer from AI
sobes.tech 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
}
}
}