Junior — Middle
106
Possono due metodi statici dichiarati con il modificatore synchronized essere eseguiti contemporaneamente all'interno di un singolo controller singleton?
Le aziende dove è stato chiesto
Демиус
Risposta dell'AI
sobes.tech AI
В Java, если два статических метода объявлены с модификатором synchronized, они синхронизируются на объекте класса (Class объекте), а не на экземпляре.
Поскольку синглтон — это один экземпляр класса, но статические методы не связаны с экземпляром, а с классом, то оба метода блокируют одну и ту же монитору класса.
Это значит, что два таких статических synchronized метода не могут выполняться одновременно в рамках одного класса (в том числе синглтона), так как они используют один и тот же монитор.
Пример:
public class SingletonController {
public static synchronized void methodA() {
// блокируется монитор класса SingletonController
}
public static synchronized void methodB() {
// блокируется тот же монитор класса
}
}
Вызов methodA и methodB из разных потоков будет последовательным, а не параллельным.