繁体   English   中英

被阻塞的中断线程,等待来自套接字的输入

[英]Interrupting Threads that are blocked, waiting for input from a Socket

当一个线程被中断同时又阻塞了Socket的InputStream输入时,该Socket的资源(例如本地端口)是否被释放?

我知道Socket有一个名为SoTimeout的选项。 如果设置了SoTimeout选项,那么超时后套接字绑定的端口会被释放吗?

  1. 没有什么说Thread.interrupt()会完全中断读取更不用说关闭套接字了, 除非它是一个InterruptibleChannel ,在这种情况下,清楚地记录了语义,抛出了ClosedByInterruptException并且关闭了通道。

  2. 如果设置套接字超时并获得SocketTimeoutException ,则套接字保持打开状态。 没有释放任何资源(包括端口),这意味着在关闭Socket之前,无法将新的Socket绑定到该端口。

超时本身既不会关闭套接字,也不会解除端口绑定。 您需要调用socket.close()来实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM