1

如何中断/恢复资源等待线程回到其他工作?说,我的线程正在等待来自资源的响应,该资源挂起或未处于响应状态。我怎样才能恢复那个线程来做其他工作?

其他线程是否可以向等待线程发送异常,以便出现异常,它可以返回到它的其他工作?

更新 :

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

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

4

2 回答 2

3

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

然后,代码应该决定中断应该产生什么后果。通常,您希望线程在中断时优雅地终止。

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

于 2013-02-13T12:29:29.713 回答
0

是的,你可以中断线程。使用 Thread.interrupt 机制,谷歌它。

于 2013-02-13T12:18:45.003 回答