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

Duda problema con hilos

Estas en el tema de Duda problema con hilos en el foro de Java en Foros del Web. Hola! Estoy utilizando hilos para controlar el tiempo de una compra por internet, que no exceda de un tiempo. Uso Struts 1. He creado una ...
  #1 (permalink)  
Antiguo 15/04/2009, 12:47
 
Fecha de Ingreso: agosto-2008
Mensajes: 57
Antigüedad: 15 años, 8 meses
Puntos: 0
Duda problema con hilos

Hola!
Estoy utilizando hilos para controlar el tiempo de una compra por internet, que no exceda de un tiempo. Uso Struts 1.
He creado una clase para el hilo como he visto por ahi en algun manual, extendiendo de la clase Thread y con la funcion run()...

En mi clase Action donde uso el hilo quiero comenzarlo en una funcion y si ciertas acciones van de manera correcta interrumpirlo en otra. Para ello utilizo en una hilo.start(), hilo.interrupt() en la de interrumpirlo. Si el tiempo se acaba cambio un dato en la base de datos que antes de realizar la accion será comprobado..

Hasta aqui todo bien. El problema me da que el hilo lo creo con alcance de clase para poder acceder a el desde las distintas funciones de la misma. Al crearlo así no se porqué aunque se completen las rutinas de la funcion run() el hilo no se destruye, se me queda por ahi colgando y cuando otro usuario o el mismo intenta utilizar la misma clase me da este error java.lang.IllegalThreadStateException, por el doble uso del hilo.start()..

alguna otra manera de instanciar el hilo que no de problemas?
u otra manera de realizar esto?

gracias
  #2 (permalink)  
Antiguo 15/04/2009, 14:44
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Duda problema con hilos

¿Y realmente necesitas controlar el tiempo con un Thread? ¿No te bastaría con controlar en que momento realiza cada accion y calcula el tiempo transcurrido cuando ejecuta una acción? Es lo más sencillo de hacer y lo que se suele utilizar.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #3 (permalink)  
Antiguo 16/04/2009, 01:58
 
Fecha de Ingreso: agosto-2008
Mensajes: 57
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Duda problema con hilos

Pues lo cierto es que no se exactamente como se suele hacer. Al ponerme con ello pense que esta sería la manera mas optima de hacerlo, pero es lo que pasa con la inexperiencia...

Pero lo de calcular los tiempos de cada accion como podría hacerlo continuando la ejecución normal?? El problema es que además de controlar ese tiempo el programa tiene que continuar sirviendo paginas a este usuario, por lo que pense que ese control deberia hacerlo en un segundo plano.

Me podrías indicar tu idea? gracias
  #4 (permalink)  
Antiguo 16/04/2009, 14:26
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Duda problema con hilos

Simplemente cuando el usuario hace una acción A, guardas en su sesion una referencia al tiempo actual. Cuando te llega una petición para la acción B, sacas de la sesión cuando hizo la acción A, la comparas con el tiempo actual y tienes la diferencia de tiempo que ha pasado.
En funcion de la diferencia le dejas realizar la acción B o le rediriges a una página que diga que ha pasado demasiado tiempo bla bla.

Así no haría falta nada en segundo plano, así que si te sirve, es mejor: Menos recursos consumidos, sólo los gastas cuando hace falta...

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #5 (permalink)  
Antiguo 18/04/2009, 03:31
 
Fecha de Ingreso: agosto-2008
Mensajes: 57
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Duda problema con hilos

Muchas gracias por tu solucion, habia pensado en ella, de hecho es la primera manera que se me ocurrio, el problema por el que implemente lo de los hilos es por si el usuario deja la reserva a medias. Necesito que ese hilo se encargue de eliminar esa reserva a medias... Para ello espero el tiempo x, y si no es interrumpido es cuando procedo a eliminarlo. Alguna idea?
  #6 (permalink)  
Antiguo 18/04/2009, 04:19
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Duda problema con hilos

Puedes poner un objeto del tipo HttpSessionListener en la sesion y se te notificará cuando la sesión ha caducado y limpias entonces la reserva a medias. O eso o si las reservas estan a medias en la BDD puedes tener un unico Thread extra que vaya limpieando las reservas a medias periodicamente (una tarea Quartz, por ejemplo).

Tener un Thread para cada proceso de reserva es un desperdicio de recursos.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #7 (permalink)  
Antiguo 23/04/2009, 04:23
 
Fecha de Ingreso: agosto-2008
Mensajes: 57
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Duda problema con hilos

Muchas gracias tio. Empezare a mirar las soluciones que me has propuesto y cuando de con la que mejor me vaya la posteare por si a alguien le sirviese ;)
1 saludo
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 14:13.