Foros del Web » Programación para mayores de 30 ;) » Java »

Realizar un TIME OUT

Estas en el tema de Realizar un TIME OUT en el foro de Java en Foros del Web. Buenas tengo que realizar un TIME OUT, es decir, que tengo un metodo que se ejecuta un determinado tiempo si no termina su ejecucion en ...
  #1 (permalink)  
Antiguo 15/11/2006, 09:26
 
Fecha de Ingreso: febrero-2006
Mensajes: 63
Antigüedad: 18 años, 2 meses
Puntos: 0
Pregunta Realizar un TIME OUT

Buenas tengo que realizar un TIME OUT, es decir, que tengo un metodo que se ejecuta un determinado tiempo si no termina su ejecucion en ese tiempo, tengo que cargarme la ejecucion y mostrar un error.

¿Como lo hago?

GRACIAS!
  #2 (permalink)  
Antiguo 15/11/2006, 10:19
 
Fecha de Ingreso: febrero-2006
Mensajes: 63
Antigüedad: 18 años, 2 meses
Puntos: 0
Pregunta ¿Una idea a ver si puede ser?

Puedo hacerlo con thread???
Duermo el hilo con sleep antes de entrar en el metodo.
Dentro de este lo pongo a start el hilo
.....
No sé es que no sé como hacerlo, haber si se le ocurre a alguien.

GRACIAS
  #3 (permalink)  
Antiguo 15/11/2006, 10:56
Avatar de Valkam  
Fecha de Ingreso: junio-2006
Ubicación: Sevilla
Mensajes: 157
Antigüedad: 17 años, 10 meses
Puntos: 0
Temporizador

Lo que pretendes hacer es bastante chungo. Ten en cuenta que mientras un metodo se está ejecutando no puede a su vez estar atendiendo hilos. O bien se queda a escuchar un hilo o bien ejecuta por su cuenta lo que tenga que ejecutar.

Hasta lo que yo se en la JDK no hay ninguna libreria para tratar con temporizadores que sean capaces de monitorizar el estado de metodos. Echale un vistazo a esta web a ver si es lo que necesitas:

(www)(.)rtsj(.)org
  #4 (permalink)  
Antiguo 15/11/2006, 11:58
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Como bien te han dicho, no hay forma de interrumpir un metodo a lo bruto, dado que el estado posterior de la JVM sería imposible de predecir, así que lo habitual es que los metodos "interrumpibles" tengan una forma de ser avisados para que dejen de trabajar o hagan una pausa de vez en cuando para comprobar un flag de si han de seguir o no.

En estos casos si que crearias un thread aparte que al darse cuenta de que el otro proceso esta tardando demasiado, cambiaria el flag o utilizaría el mecanismo que fuera para que el procesamiento no continuara.

Por ejemplo, hay metodos que quedan durmiendo mucho tiempo en un sleep(), estos se pueden "despertar" con un interrupt(), otro caso es los que se quedan bloqueados leyendo de un socket: no siempre funciona pero cerrando el socket del que leen les salta una excepcion y se "despiertan" etc... Pero no hay una solución general.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:19.