Когда член Java должен быть поточно-безопасным, мы делаем так:Как работает статическая синхронизированная функция?
public synchronized void func() {
...
}
Этот синтаксис эквивалент:
public void func() {
synchronized(this) {
....
}
}
То есть, на самом деле использует this
для замка.
Мой вопрос, если я использую synchronized
с методом static
следующим образом:
class AA {
private AA() {}
public static synchronized AA getInstance() {
static AA obj = new AA();
return obj;
}
}
В этом случае на то, что замок сделан для метода synchronized
?
Класс AA будет заблокирован 'синхронизированные (AA.class)', но ни одного случая –
Не статическое объявление локальной переменной 'obj' синтаксическую ошибку? – Thilo