我有以下代码
try{
sleep(500);
}catch(InterruptedException e){}
当线程完成休眠或在该线程上调用InterruptedException
方法时,是否抛出interrupt
?
答案 0 :(得分:5)
不,InterruptedException
在正常流程中不会被抛出,但可能会在线程上调用interrupt()
时发生(例如,某些其他代码尝试中断此线程的正常执行流程)。
通常,执行只是在sleep语句之后的行中继续执行。
答案 1 :(得分:3)
如果在睡眠时间内调用interrupt
方法。 catch
仅与try
的代码相关,之后无效。
答案 2 :(得分:2)
如果线程被中断,则会抛出InterruptedException,这可能在睡眠期间发生,或者可能在前一段时间发生。在大多数情况下,当你不期望InterruptedException并且不想处理它时,最好
try{
sleep(500);
}catch(InterruptedException e){
Thread.currentThread().interrupt();
}
所以中断不会丢失。