簡體   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