用sleep方法在Java中唤醒一个线程

时间:2014-02-10 03:14:31

标签: java multithreading

我是Java新手,所以请原谅我这个问题 有没有办法通过调用睡眠(超时)方法并在超时到期之前唤醒睡眠的睡眠线程?例如,为某些事件唤醒他

谢谢

我已经尝试过这个代码处理我的事件来手动睡眠/唤醒线程但它不起作用:线程休眠但无法恢复

              try {
             if(sleepMyThread){

            myThread.sleep(100000);
            sleepMyThread = false;
              }
             else{
            myThread.interrupt();
            sleepMyThread = true;
              }
          }
    catch (InterruptedException e) {
           e.printStackTrace();
    }

3 个答案:

答案 0 :(得分:3)

仔细阅读sleep方法的文档。它明确指出 - 方法抛出InterruptedException。因此,您可以通过中断该线程来唤醒睡眠线程。但是,这不是将事件发送到线程的方法。对于发送事件(好吧......核心java中没有真正基于事件的机制),您应该使用wait - notify机制。

答案 1 :(得分:0)

调用线程上的interrupt()方法。它会抛出一个InterruptedException,所以请确保你处理它。

答案 2 :(得分:0)

您可以中断,捕获中断异常并再次循环。这里有一个很好的简单教程: http://docs.oracle.com/javase/tutorial/essential/concurrency/simple.html