线程暂停后会发生什么?

时间:2011-05-06 07:32:35

标签: java multithreading interrupt

我有以下代码

try{
    sleep(500);
}catch(InterruptedException e){}

当线程完成休眠或在该线程上调用InterruptedException方法时,是否抛出interrupt

3 个答案:

答案 0 :(得分:5)

不,InterruptedException在正常流程中不会被抛出,但可能会在线程上调用interrupt()时发生(例如,某些其他代码尝试中断此线程的正常执行流程)。 通常,执行只是在sleep语句之后的行中继续执行。

答案 1 :(得分:3)

如果在睡眠时间内调用interrupt方法。 catch仅与try的代码相关,之后无效。

答案 2 :(得分:2)

如果线程被中断,则会抛出InterruptedException,这可能在睡眠期间发生,或者可能在前一段时间发生。在大多数情况下,当你不期望InterruptedException并且不想处理它时,最好

try{
    sleep(500);
}catch(InterruptedException e){
    Thread.currentThread().interrupt();
}

所以中断不会丢失。