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