Junior — Middle
Как работи механизмът synchronized при използването му със статична функция в контекста на монитор?
sobes.tech AI
Отговор от AI
Когато метод е обявен като synchronized static в Java, мониторът (локът) се взема на ниво клас, а не на ниво обектен екземпляр. Това означава, че при извикване на такъв метод, нишката блокира монитора на класа (обект Class), и никоя друга нишка не може едновременно да изпълнява други статични синхронизирани методи на същия клас.
Пример:
public class Example {
public static synchronized void staticSyncMethod() {
// блокира монитора на класа Example.class
// критична секция
}
}
Така, synchronized върху статичен метод осигурява взаимно изключване на ниво цял клас, а не на конкретен обект. Това е полезно, когато трябва да синхронизираш достъпа до статични ресурси или променливи на класа.