2011-08-15 46 views
0

我在應用程序中使用我可以在Java HttpURLConnection中爲數據傳輸設置超時嗎?

URLConnection urlConn = theURL.openConnection(); 

// set connect timeout. 
urlConn.setConnectTimeout(5000); 

// set read timeout. 
urlConn.setReadTimeout(5000); 

。連接時間超時,直到讀取開始。有沒有簡單的方法來超時實際的數據傳輸過程?

我有線程從非常慢的主機讀取數據,或者數據源非常大,導致傳輸時間過長。我怎樣才能限制那段時間?

+0

請參閱http://stackoverflow.com/q/2733356/ – Saul

+0

謝謝。但我認爲設置ThreadPool的總體超時不是一個選項。我不想在x分鐘後取消所有正在運行的線程。我想限制一個線程的執行時間。據我所知,interrupt()並不總是在IO阻塞的線程上工作。 – Olga

回答

-1

據我所知,我認爲docs支持這個,readTimeout開始從InputStream的讀取開始 - 所以這將超時一個很長的轉移。

編輯:文檔說:從輸入流 讀取時,當連接建立資源

這可能是不那麼好

非零值指定超時書面的,但我聽起來好像這確實涉及轉移時間。

+0

dv'er - 請評論? –

+0

沒有超時是爲了開始讀取數據。 Web服務器可能希望在發送數據之前進行一些預處理 - >此超時將保護您免受這種情況的影響。 – ExtremeCoder

+0

傳輸數據時讀取超時不開始。讀取超時是兩個數據包可用之間的時間。如果網絡連接丟失,這可能會發生尖銳的事情。 –

相關問題