из java tutorials :
Когда один поток выполняет синхронизированный метод для объекта, все остальные потоки, которые вызывают синхронизированные методы для одного и того же блока объектов ( приостановить выполнение) до тех пор, пока первый поток не будет выполнен с объектом.
blockquote>Итак, я думаю, что ключевое слово syncronized работало, как ожидалось, и синхронизированный рекурсивный вызов совершенно легален (и работает) в java.