读取套接字时的Java中断线程
可能重复:
如何立即终止套接字IO操作的线程阻塞?
我有客户端在线程中运行想要从Java中读取套接字。 但是在阅读时,也许我想要杀死这个主题。 所以我interrupt
它,但socket的读取方法是否会抛出InterruptedException
? 我没找到。
那么,如果在读取套接字时阻塞线程,我怎么能很好地要求线程死掉?
谢谢
已经回答如何立即终止套接字IO操作上的线程阻塞?
基本上,当你close()
套接字时,所有关联的流都将关闭,导致所有被阻止的操作被解除阻塞。
或者你可以调用Thread.interrupt()
,它会中断阻塞操作,导致它抛出InterruptedException
。
如果你打断()一个在IO操作中被阻塞的线程,它可能会抛出InterruptedIOException
。 解除阻塞在Socket
上的线程的另一种可能方法是关闭Socket
。
有关更多详细信息,请参阅我对此问题的回答: 如何立即终止线程阻塞套接字IO操作?
NIO通道具有InterruptableChannel ,它将在阻塞操作中被中断。 您可以将NIO与阻塞操作一起使用,这样它们的工作方式与Java IO大致相同,即您不必重新开发应用程序以使用选择器/调度程序等。