Если поток прерывается на wait (), будет ли монитор повторно получен до достижения блока catch вне блока синхронизации?


Пожалуйста, рассмотрите следующий код:

try{
    synchronized(myLock){
        myLock.wait(); // gets interrupted while waiting.
   }
}catch(InterruptedException ie){

}

Если поток прерывается во время блокировки на wait (), будет ли монитор myLock повторно приобретен (временно?) до того, как оказался в блоке улова?

1 2

1 ответ:

Как javadoc состояния

Если текущий поток прерывается каким-либо потоком до или во время его ожидает, затем вызывается исключение InterruptedException. Это исключение составляет не выбрасывается до тех пор, пока состояние блокировки этого объекта не будет восстановлено как описанный выше.

Таким образом, да, он будет заблокирован в ожидании повторного запроса блокировки, а затем выдаст исключение.