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

TimerTask VS Thread.sleep? Cuál conviene?

Estas en el tema de TimerTask VS Thread.sleep? Cuál conviene? en el foro de Java en Foros del Web. Hola gente. Tengo un problema con 3 soluciones y no me decido cual camino tomar. Tengo un proceso al que se le configuran tareas a ...
  #1 (permalink)  
Antiguo 09/06/2010, 14:50
Avatar de ezefarina  
Fecha de Ingreso: junio-2009
Mensajes: 91
Antigüedad: 15 años, 4 meses
Puntos: 2
TimerTask VS Thread.sleep? Cuál conviene?

Hola gente. Tengo un problema con 3 soluciones y no me decido cual camino tomar. Tengo un proceso al que se le configuran tareas a ejecutarse dentro de un determinado tiempo y a lapsos regulares. Este proceso puede hacer 2 cosas:
1- Correr un Thread por cada tarea configurada, y que cada thread espere por si mismo su momento de ejecución.
2- Un Timer con un TimerTask por cada tarea.
3- Que mi proceso calcule constantemente el momento de ejecución de cada tarea y cree y ejecute el Thread cuando corresponda. Lo cual no tengo ganas de hacer, pero si hay que hacerlo, lo haré.

Que opción ven mas performante? Algunos problemas en vista, suponiendo 20 tareas configuradas:
1- La primera opción: Si tengo 20 tareas configuradas, voy a tener 20 threads en sleep, constantemente, salvo cuando se están ejecutando.
2- En la segunda: Tendría 20 TimerTasks en espera. Y la ejecución de estos no es asincrónica, con lo cual me veo obligado a ejecutar el thread asincronicamente desde el TimerTask, de manera que no me retrase las demás tareas.

Que opción les parece mejor? O tienen alguna otra solución en mente?


Slds y muchas gracias!
  #2 (permalink)  
Antiguo 09/06/2010, 15:10
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: TimerTask VS Thread.sleep? Cuál conviene?

No entiendo eso de "Y la ejecución de estos no es asincrónica, con lo cual me veo obligado a ejecutar el thread asincronicamente desde el TimerTask, de manera que no me retrase las demás tareas".

En cualquier caso, ambas soluciones son equivalentes, (20 threads dormidos o 20 timer task en espera) y supongo que cualquier problema de "asincronismo" lo tendrás en ambos casos.

No he hecho pruebas al respecto, pero yo me inclinaría por TimerTask porque me da la impresión de que está implementado por debajo de forma más eficiente para este tipo de cosas que los sleep() de los hilos.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 09/06/2010, 18:44
Avatar de ezefarina  
Fecha de Ingreso: junio-2009
Mensajes: 91
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: TimerTask VS Thread.sleep? Cuál conviene?

No, no es lo mismo. Los TimerTask en espera no son Threads en espera. El que espera es el Timer. Los TimerTasks recien se ejecutan cuando el Timer se los indica. En cambio los Threads se mantendrían constantemente vivos y a la espera.
Con respecto a la sincronía del Timer, me refiero a que si vos agregas varios TimerTasks a un Timer, el Timer ejecuta secuencialmente estos TimerTask en caso de que se solapen los tiempos, en vez de ejecutarlos en paralelo. Este problema con los Threads no pasa
  #4 (permalink)  
Antiguo 10/06/2010, 00:49
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 1 mes
Puntos: 51
Respuesta: TimerTask VS Thread.sleep? Cuál conviene?

Una cuarta opción:
.- Usar un scheduler como Quartz, de OpenSymphony, el cual se encarga de gestionar los Threads etc. para poder realizar las tareas a su hora.

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

Etiquetas: programadas, sleep, tareas, thred, timertask, time
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 11:22.