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