Ver Mensaje Individual
  #5 (permalink)  
Antiguo 14/07/2010, 04:42
GreenEyed
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 7 meses
Puntos: 51
Respuesta: Detener metodo bloqueante

Hay streams que se bloquean, como por ejemplo el InpuStream/OutputStream de un proceso lanzado con Runtime.exec donde si lees cuando toca escribir o viceversa entonces la cosa se queda bloqueada. En estos casos se usan Threads separados para que nadie se quede bloqueado esperando.

En tu caso, el problema parece ser que la llamada al stream se queda bloqueada sí o sí cuando no hay nada conectado, y en estos casos normalmente:
.- Hay un método de comprobación de si te vas a quedar bloqueado o no para llamarlo antes y no quedarte bloqueado
.- Hay una versión del método al que le pasas un timeout para que salte una excepción si no ha respondido al cabo de X tiempo.
.- Toca crearse un thread que haga de Timeout y cuando le salte el tiempo hacer un close del stream para que salte una IOException y se desbloquee el proceso esperando del stream.

Hay que mirar la clase con la que se puede llamar al método y ver el API para averiguar cuales opciones hay disponibles. Por ejemplo, aunque lo que tengas sea un OutputStream, eso es una interfaz y hay que mirar cual es la clase que realmente hay por debajo para ver si tiene alguna opción más aparte de las genéricas de OutputStream.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.