簡體   English   中英

在發出HTTP請求時在java中實現超時的最佳方法

[英]Best way to implement timeouts in java when making a HTTP request

是否更好的方法是在java.net.Socket上使用setSoTimeout或者使用ExecutorService包裝使用另一個類進行Http調用的服務並使用Futures管理方法超時?

目前更好地定義為良好實踐/更可靠/准確。 除非相當大,否則不一定考慮對性能的影響。

編輯:還應該在java.net.Socket上提到connect(SocketAddress endpoint,int timeout)方法更清楚。

都不是? 使用HttpURLConnection.setReadTimeout()setConnectTimeout()

BenG - 我認為這是“它取決於你想要的”場景 - 如果你對並發庫進行規范化,那很好,但你需要自己管理關閉套接字。

如果你想使用超時,它會為你做。

如果您在代碼中的任何地方都使用並發庫,並且他們覺得非常自然,請確保自己手動管理套接字。

從技術上講(如果你看一下Socket里面的代碼),其中一個或那個沒有任何大的優勢。 只需確保在Future中處理套接字狀態時,您正在捕獲潛在的IOExceptions,因此處理您的未來不會破壞您的執行線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM