Я думаю, вы как бы неправильно понимаете, как работает «блокировка» (любая блокировка) в Java (синхронизированное поведение по умолчанию несколько смущает это). Синхронизация на объекте не блокирует этот объект. он блокируется только против других вызовов, которые синхронизируются с тем же объектом. Аналогично, ReentrantLock не «блокирует» объект, он блокируется только против других вызовов блокировки в том же ReentrantLock.