【问题标题】:sleep from main thread is throwing InterruptedException从主线程睡眠正在抛出 InterruptedException
【发布时间】:2010-04-18 18:36:47
【问题描述】:

我有生成新线程的主执行线程。在 main() 的执行主线程中,我调用Thread.sleep()。我什么时候会收到未处理的异常类型InterruptedException?。

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

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

【问题讨论】:

  • 任何代码将不胜感激:)。
  • 好吧,我正在做或已经做的所有事情都调用了 Thread.sleep(几毫秒)或使用 Thread t = Thread 引用了我的主线程(我认为这就是它正在做的事情) .currentThread() 然后调用 t.sleep(几毫秒)。两种情况都抛出了 InterruptedException。

标签: java multithreading


【解决方案1】:

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

1) 将方法声明为throws InterruptedException,因此需要调用者处理异常

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

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

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

【讨论】:

    【解决方案2】:

    在您定义 ma​​in 的那一行,只需包含 throws Exception。我也面临类似的问题,这有帮助。包含此内容后,您无需将 Thread.sleep(xx); 包含在 try-catch 语句中

    【讨论】:

      【解决方案3】:
      Thread.sleep(t);
      

      这就是你可以让你的线程等待的方法。其中 t 以毫秒为单位。 它在我的主要方法中运行良好,因此如果您可以在此处提供代码,那么要找出您的问题会更好。

      【讨论】:

        猜你喜欢
        • 2014-07-07
        • 2018-12-04
        • 1970-01-01
        • 1970-01-01
        • 2018-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-21
        相关资源
        最近更新 更多