读取套接字时的Java中断线程

可能重复:
如何立即终止套接字IO操作的线程阻塞?

我有客户端在线程中运行想要从Java中读取套接字。 但是在阅读时,也许我想要杀死这个主题。 所以我interrupt它,但socket的读取方法是否会抛出InterruptedException ? 我没找到。

那么,如果在读取套接字时阻塞线程,我怎么能很好地要求线程死掉?

谢谢

已经回答如何立即终止套接字IO操作上的线程阻塞?

基本上,当你close()套接字时,所有关联的流都将关闭,导致所有被阻止的操作被解除阻塞。

或者你可以调用Thread.interrupt() ,它会中断阻塞操作,导致它抛出InterruptedException

如果你打断()一个在IO操作中被阻塞的线程,它可能会抛出InterruptedIOException 。 解除阻塞在Socket上的线程的另一种可能方法是关闭Socket

有关更多详细信息,请参阅我对此问题的回答: 如何立即终止线程阻塞套接字IO操作?

NIO通道具有InterruptableChannel ,它将在阻塞操作中被中断。 您可以将NIO与阻塞操作一起使用,这样它们的工作方式与Java IO大致相同,即您不必重新开发应用程序以使用选择器/调度程序等。