В Java синхронизированные блокировки являются реентерабельными .
Вспомните, что нить не может получить блокировку, принадлежащую другому потоку. Но нить может приобрести блокировку, которой она уже владеет. Разрешить потоку получать один и тот же замок более одного раза, обеспечивает повторную синхронизацию. Это описывает ситуацию, когда синхронизированный код, прямо или косвенно, вызывает метод, который также содержит синхронизированный код, и оба набора кода используют одну и ту же блокировку. Без повторной синхронизации синхронизированный код должен принять много дополнительных мер предосторожности, чтобы избежать блокировки потока.
blockquote>Источник: см. нижнюю часть на этой странице