从主线程休眠是抛出InterruptedException

时间:2010-04-18 18:36:48

标签: java multithreading

我有执行的主线程产生新线程。在main()的主要执行线程中,我调用了Thread.sleep()。我何时会收到未处理的例外类型InterruptedException

我不确定为什么我会这样做。我认为这是因为我需要对主线程的引用,所以我继续通过Thread.currentThread()引用它。

这不是让线程睡眠的方法吗?我需要做的是让主线程等待/睡眠/延迟,直到它再次需要工作。

3 个答案:

答案 0 :(得分:20)

您看到的是编译错误,因为您没有正确处理已检查的异常(在这种情况下为InterruptedException)。处理意味着执行以下操作之一:

1)将方法声明为throws InterruptedException,从而要求调用者处理异常

2)用try{..}catch(..){..}块捕获它。例如:

try {
    Thread.sleep(1500);
} catch(InterruptedException e) {
    System.out.println("got interrupted!");
}

InterruptedException用于指示当前线程在执行某些阻塞操作时被外部线程中断(例如,可中断的IO,等待,休眠)

答案 1 :(得分:0)

的定义开始的行,只需包含抛出异常。我也面临类似的问题,这有帮助。包含此内容后,您不需要在try-catch语句中包含 Thread.sleep(xx);

答案 2 :(得分:-2)

Thread.sleep(t);

这是让你的线程等待的方法。其中t以毫秒为单位。 它在我的主要方法中工作正常,所以要找出你的问题,如果你能在这里提供你的代码会更好。