我是Java新手,所以请原谅我这个问题 有没有办法通过调用睡眠(超时)方法并在超时到期之前唤醒睡眠的睡眠线程?例如,为某些事件唤醒他
谢谢
我已经尝试过这个代码处理我的事件来手动睡眠/唤醒线程但它不起作用:线程休眠但无法恢复
try {
if(sleepMyThread){
myThread.sleep(100000);
sleepMyThread = false;
}
else{
myThread.interrupt();
sleepMyThread = true;
}
}
catch (InterruptedException e) {
e.printStackTrace();
}
答案 0 :(得分:3)
仔细阅读sleep
方法的文档。它明确指出 - 方法抛出InterruptedException
。因此,您可以通过中断该线程来唤醒睡眠线程。但是,这不是将事件发送到线程的方法。对于发送事件(好吧......核心java中没有真正基于事件的机制),您应该使用wait
- notify
机制。
答案 1 :(得分:0)
调用线程上的interrupt()
方法。它会抛出一个InterruptedException
,所以请确保你处理它。
答案 2 :(得分:0)
您可以中断,捕获中断异常并再次循环。这里有一个很好的简单教程: http://docs.oracle.com/javase/tutorial/essential/concurrency/simple.html