![]() |
Servicio Web y Thread(Hilos) Buenas: Queria sabes si se puede hacer que un servicio web tenga hilos dentro para algunas tareas y uno de los hilos haga el return(que será el response al cliente)?? Es posible esto??? por ejemplo: El modo clasico: Código PHP: Código PHP: |
Re: Servicio Web y Thread(Hilos) El return debe ocurrir en el mismo Thread, asi que directamente no. |
Re: Servicio Web y Thread(Hilos) Gracias por la respuesta... pero en el segundo ejemplo no estoy haciendo el return desde el hilo??? O sea que ese ejemplo funcionaría??? |
Re: Servicio Web y Thread(Hilos) No. El return que haces en el hilo es un return de la funcion "run()" del hilo, no del metodo que lanzo el hilo. Si quieres que el metodo haga un return del resultado de ejecutar lo del hilo, entonces tienes que hacer que el metodo espere a que el Thread termine, le devuelva el valor y entonces hacer un return desde el metodo. S! |
Re: Servicio Web y Thread(Hilos) Esta claro.... sería una cosa asi no: Código PHP: |
Re: Servicio Web y Thread(Hilos) Algo asi, aunque el codigo que pones no es correcto, pero en realidad para esperar lo apropiado es hacer un "join" http://java.sun.com/j2se/1.4.2/docs/...ead.html#join() De todas formas, si haces eso hacer el calculo en otro Thread no te sirve de nada, ya que igualmente te quedaras esperando a terminar el cálculo. S! |
Re: Servicio Web y Thread(Hilos) Esta claro.... solo es un ejemplo... en realidad los hilos que pienso implementar tienen varias operaciones contra bases de datos que necesito realizar en paralelo. por eso necesito utilizar Threads.... Muchas gracias por la info.. voy a ver como implementarlo de la manera correcta con el metodo join . ;) |
Re: Servicio Web y Thread(Hilos) Si vas a lanzar varios Thread, quiza en vez de usar un join() para bloquearte, puedes usar las primitivas wait() y notify() para ir notificando al Thread principal a medida que los otros van terminando. Así no tienes que hacer un join() para cada uno de los Threads que lances. Un ejemplo típico que yo he usado es crear una "cola" de trabajos y llenarla con las tareas a realizar, lanzar n Threads que van leyendo de la cola y vaciandola y cuando acaban su parte hacen un notifyAll(). El proceso principal hace un bucle esperando a que la cola se vacíe y si no está vacía hace un wait(), del que despierta cuando alguien hace un notifyAll. Tambien sirve si no es conveniente lanzar un thread por tarea, por que hay muchas, y asi puedes hacer que un Thread haga varias si al acabar todavia quedan pendientes en la cola. Se puede hacer el wait() esperando que se vacie una cola de tareas... o esperando a que se llene una cola de "resultados", dependiendo de si necesitas que te devuelvan algo o no. Se puede refinar con timeouts para que los procesos no se queden colgados esperando eternamente etc. pero la idea básica es esa. En Java 5 creo que hay ya estructuras echas que te permiten tener colas sincronizadas etc. (paquete java.util.concurrent ), pero todavia no he podido experimentar bien con ellas. Segun el JDK que uses, quiza te ahorren un buen trabajo, aunque la base es esa. S! |
| La zona horaria es GMT -6. Ahora son las 05:47. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.