如何中断/恢复资源等待线程回到其他工作?说,我的线程正在等待来自资源的响应,该资源挂起或未处于响应状态。我怎样才能恢复那个线程来做其他工作?
其他线程是否可以向等待线程发送异常,以便出现异常,它可以返回到它的其他工作?
更新 :
我已经尝试过以下方式,但没有用。
我有超时线程,它将检查第一个线程等待的特定事务是否发生默认超时,如果是,则在第一个线程上触发中断()调用。
如何中断/恢复资源等待线程回到其他工作?说,我的线程正在等待来自资源的响应,该资源挂起或未处于响应状态。我怎样才能恢复那个线程来做其他工作?
其他线程是否可以向等待线程发送异常,以便出现异常,它可以返回到它的其他工作?
更新 :
我已经尝试过以下方式,但没有用。
我有超时线程,它将检查第一个线程等待的特定事务是否发生默认超时,如果是,则在第一个线程上触发中断()调用。
答案取决于许多因素。中断线程的“正确”方法是使用 thread.interrupt() 方法。这要求线程的代码是协作的;它应该知道中断,或者通过处理可中断操作(例如等待或睡眠)抛出的InterruptedException,或者通过定期检查当前线程的中断标志。
然后,代码应该决定中断应该产生什么后果。通常,您希望线程在中断时优雅地终止。
我会检查您的阻塞操作是否具有内置的超时机制,而不是使用中断。例如,如果它在 obj.wait() 上被阻止,那么您可以改用 obj.wait(timeout) 。
是的,你可以中断线程。使用 Thread.interrupt 机制,谷歌它。