Cómo matar una llamada BufferedInputStream .read ()

Estoy trabajando en escribir un programa para descargar archivos muy grandes (~ 2GB) de un servidor. He escrito el programa para poder reanudar descargas parcialmente terminadas,

Para simular una mala conexión a Internet, he estado sacando el cable de ethernet de mi enrutador durante la descarga. Desafortunadamente, esto hace que mi programa se cuelgue en la siguiente llamada:while((bytesRead = in.read(data)) > 0)

(Donde bytesRead es un int, in es un BufferedInputStream construido a partir de una HttpURLConnection, y los datos son una matriz de bytes).

Intenté "interrumpir" la llamada llamando a in.close () en otro subproceso, pero no tiene ningún efecto hasta que se restablece la conexión a Internet (en ese momento se lanza una excepción).

¿Hay alguna forma de evitar que una conexión a Internet cortada congele mi programa?

Respuestas a la pregunta(6)

Su respuesta a la pregunta