Junior — Middle
Pot fi două metode statice declarate cu modificatorul synchronized executate simultan într-un singur controler singleton?
sobes.tech AI
Răspuns de la AI
В Java, если два статических метода объявлены с модификатором synchronized, они синхронизируются на объекте класса (Class объекте), а не на экземпляре.
Поскольку синглтон — это один экземпляр класса, но статические методы не связаны с экземпляром, а с классом, то оба метода блокируют одну и ту же монитору класса.
Это значит, что два таких статических synchronized метода не могут выполняться одновременно в рамках одного класса (в том числе синглтона), так как они используют один и тот же монитор.
Пример:
public class SingletonController {
public static synchronized void methodA() {
// блокируется монитор класса SingletonController
}
public static synchronized void methodB() {
// блокируется тот же монитор класса
}
}
Вызов methodA и methodB из разных потоков будет последовательным, а не параллельным.