我有执行的主线程产生新线程。在main()的主要执行线程中,我调用了Thread.sleep()
。我何时会收到未处理的例外类型InterruptedException
?
我不确定为什么我会这样做。我认为这是因为我需要对主线程的引用,所以我继续通过Thread.currentThread()
引用它。
这不是让线程睡眠的方法吗?我需要做的是让主线程等待/睡眠/延迟,直到它再次需要工作。
答案 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以毫秒为单位。 它在我的主要方法中工作正常,所以要找出你的问题,如果你能在这里提供你的代码会更好。