Sobes.tech
Junior — Middle

Как работи механизмът synchronized при използването му със статична функция в контекста на монитор?

sobes.tech AI

Отговор от AI

Когато метод е обявен като synchronized static в Java, мониторът (локът) се взема на ниво клас, а не на ниво обектен екземпляр. Това означава, че при извикване на такъв метод, нишката блокира монитора на класа (обект Class), и никоя друга нишка не може едновременно да изпълнява други статични синхронизирани методи на същия клас.

Пример:

public class Example {
    public static synchronized void staticSyncMethod() {
        // блокира монитора на класа Example.class
        // критична секция
    }
}

Така, synchronized върху статичен метод осигурява взаимно изключване на ниво цял клас, а не на конкретен обект. Това е полезно, когато трябва да синхронизираш достъпа до статични ресурси или променливи на класа.