Я не знаю Java, но обычная семантика блокировки заключается в том, что когда вы пытаетесь получить блокировку, вы блокируете ее, пока не получите.Это означает, что нет необходимости проверять, действительно ли вы получили блокировку - когда поток переходит на следующую строку, вы можете быть уверены, что заблокированы.Когда вы начинаете пытаться делать с замками другие вещи, например, пытаетесь проверить, заблокирован он или нет, вы обычно делаете это неправильно.