[英]Interrupting Threads that are blocked, waiting for input from a Socket
当一个线程被中断同时又阻塞了Socket的InputStream
输入时,该Socket的资源(例如本地端口)是否被释放?
我知道Socket有一个名为SoTimeout
的选项。 如果设置了SoTimeout
选项,那么超时后套接字绑定的端口会被释放吗?
没有什么说Thread.interrupt()
会完全中断读取,更不用说关闭套接字了, 除非它是一个InterruptibleChannel
,在这种情况下,清楚地记录了语义,抛出了ClosedByInterruptException
并且关闭了通道。
如果设置套接字超时并获得SocketTimeoutException
,则套接字保持打开状态。 没有释放任何资源(包括端口),这意味着在关闭Socket之前,无法将新的Socket绑定到该端口。
超时本身既不会关闭套接字,也不会解除端口绑定。 您需要调用socket.close()
来实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.