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