Скажем, у меня есть синхронизированный метод для некоторого класса:
abstract class Foo {
public synchronized void foo() { // synchronized!
// ...
};
}
и я переделал его без с помощью синхронизированного модификатора:
class Bar extends Foo {
@Override
public void foo() { // NOT synchronized!
super.foo();
// ...
}
}
У меня есть несколько конкретных вопросов относительно этого сценария:
- Будет ли неявно синхронизироваться и переопределенный метод?
- Если нет, будет ли синхронизирован
super
-call? - Если нет
super
-call, что-нибудь будет синхронизировано? - Есть ли способ заставить переопределяющий метод использовать
synchronized
(я заметил, что абстрактные определения методов или определения методов внутри интерфейса не позволяют синхронизировать ключевое слово)?