На каком объекте происходит синхронизация при вызове static synchronized метода
У синхронизированного статического метода нет доступа к this
, но есть доступ к объекту класса Class
, он присутствует в единственном экземпляре и именно он выступает в качестве монитора для синхронизации статических методов. Таким образом, следующая конструкция:
public class SomeClass {
public static synchronized void someMethod() {
//code
}
}
эквивалентна такой:
public class SomeClass {
public static void someMethod(){
synchronized(SomeClass.class){
//code
}
}
}
Oct. 21, 2023, Источник