如何恢复正在等待资源的线程?

时间:2013-02-13 12:16:20

标签: java multithreading

如何中断/恢复资源等待线程回到其他工作?说,我的线程正在等待资源被挂起或不处于响应状态的资源的响应。如何恢复该线程以执行其他工作?

其他线程是否可以向等待线程发送异常,因此除了异常之外,它还可以回到其他工作中?

更新:

我已经按照以下方式尝试过,但没有用。

我有超时线程,它将检查第一个线程等待的特定事务是否发生了默认超时,如果是,则在第一个线程上调用fire interrupt()。

2 个答案:

答案 0 :(得分:3)

答案取决于很多因素。 中断线程的“正确”方法是使用thread.interrupt()方法。这要求线程的代码是合作的;它应该通过处理可中断操作(例如等待或休眠)抛出的InterruptedException,或者通过定期检查当前线程的中断标志来了解中断。

然后,代码应该决定中断应该具有什么后果。通常,您希望线程在中断的情况下正常终止。

我会检查你的阻塞操作是否有内置的超时机制,而不是使用中断。如果它在obj.wait()上被阻止,那么你可以使用obj.wait(timeout)代替。

答案 1 :(得分:0)

是的,你可以interrupt线程。使用Thread.interrupt机制,google it。