[英]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.