Нить, удерживающая замок, разблокирует замок, а затем (или "a") заблокированная нить просыпается. Если поток, удерживающий блокировку, никогда не снимает блокировку (возможно, из-за того, что заблокирован на другом ресурсе), вы получаете тупик. Не вращающаяся блокировка обычно использует примитивы wait () / notify () или что-то подобное, так что поток уведомляется, когда блокировка снова становится доступной.