我正在編寫一個程序從服務器下載非常大的文件(〜2GB)。我編寫的程序能夠恢復部分完成的下載,如何殺死一個BufferedInputStream .read()調用
爲了模擬糟糕的互聯網連接,我在中途下載時將我的以太網電纜從我的路由器中拔出。不幸的是,這將導致我的程序掛在下面的調用: while((bytesRead = in.read(data)) > 0)
(其中bytesRead是int,在從一個HttpURLConnection類建立了一個的BufferedInputStream和數據是一個字節數組)。我試圖通過在另一個線程上調用in.close()來「中斷」調用,但直到互聯網連接恢復(此時拋出異常)它才起作用。
有沒有什麼辦法可以防止斷斷續續的網絡連接凍結我的程序?
還有類似的回答問題:http://stackoverflow.com/questions/804951/is-it-possible-to-read-from-a-java-inputstream-with-a-timeout – 2012-01-27 23:45:27