Как и следовало ожидать, блокировка снимается нормально.
Для справки, соответствующий раздел JLS, который гарантирует такое поведение: § 14.19 :
Если выполнение блока завершается нормально, блокировка разблокируется, а оператор синхронизации завершается нормально. Если выполнение блока завершается внезапно по какой-либо причине, тогда блокировка разблокируется, и оператор синхронизации завершается внезапно по той же причине.
(«внезапное завершение» определено в другом месте в JLS для включения исключений из JVM, исключений, вызванных throw
, и использования операторов break
, continue
или return
для передачи вне блока. )