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

时间:2011-05-29 04:19:23

标签: java multithreading sockets network-programming interrupted-exception

  

可能重复:
  How to terminate a thread blocking on socket IO operation instantly?

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

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

由于

3 个答案:

答案 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大致相同,即您不必重新开发应用程序以使用选择器/调度程序等。