请考虑以下代码:
try{
synchronized(myLock){
myLock.wait(); // gets interrupted while waiting.
}
}catch(InterruptedException ie){
}
如果线程在 wait() 上被阻塞时被中断,myLock 的监视器是否会在进入 catch 块之前被重新获取(暂时?)?
请考虑以下代码:
try{
synchronized(myLock){
myLock.wait(); // gets interrupted while waiting.
}
}catch(InterruptedException ie){
}
如果线程在 wait() 上被阻塞时被中断,myLock 的监视器是否会在进入 catch 块之前被重新获取(暂时?)?
正如javadoc所说
如果当前线程在等待之前或期间被任何线程中断,则抛出 InterruptedException。在此对象的锁定状态已按上述恢复之前,不会引发此异常。
所以,是的,它将被阻塞,等待重新获取锁,然后抛出异常。