Мне нужно вызвать некоторые синхронизированные методы через Java Reflection API. Допустим, у меня есть:
public final synchronized void doSomething() {
Thread.sleep(1000);
}
Если бы я вызывал этот метод напрямую из двух потоков, один поток вошел бы в метод, а другой поток должен был бы ждать, пока первый поток не покинет блок метода (через одну секунду). Тогда другой поток мог бы ввести метод, и все остальные потоки должны были бы ждать.
Есть ли разница, если я не вызываю метод напрямую, а вызываю его через отражение? Будет ли поведение «блокировки» таким же?