私は、サーバから非常に大きなファイル(〜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 –