无法响应中断时如何停止线程?

如何处理不可中断的阻塞?
A. 用interrupt方法来请求停止线程
B. 不可中断的阻塞无法处理
C. 根据不同的类调用不同的方法
解答: 应该选C。
如果线程阻塞是由于调用了 wait(),sleep() 或 join() 方法,你可以中断线程,通过抛出 InterruptedException 异常来唤醒该线程。 但是对于不能响应InterruptedException的阻塞,很遗憾,并没有一个通用的解决方案。 但是我们可以利用特定的其它的可以响应中断的方法,比如ReentrantLock.lockInterruptibly(),比如关闭套接字使线程立即返回等方法来达到目的。 答案有很多种,因为有很多原因会造成线程阻塞,所以针对不同情况,唤起的方法也不同。 总结就是说如果不支持响应中断,就要用特定方法来唤起,没有万能药。

你可能感兴趣的:(无法响应中断时如何停止线程?)