我正在编写一个程序从服务器下载非常大的文件(〜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