Sobes.tech
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
        }
    }
}