2011-01-29 9 views
6

Me gustaría hacer una pregunta básica antes de pasar a mi pregunta principal.¿Puedo generar un hilo de un servlet?

Digamos que estoy ejecutando un programa Java simple, que genera un hilo en la función principal. ¿Seguirá ejecutándose el hilo cuando se complete la función principal? ¿Existe un concepto de relaciones padre/hijo entre subprocesos?

Tengo un servlet que tarda mucho en procesar una solicitud (5 minutos). ¿Puedo generar un hilo de fondo del servlet principal para manejar el trabajo & volver pronto. ¿El hilo de fondo continuaría ejecutándose incluso cuando el servlet principal haya terminado de procesarse?

Respuesta

2
  • Existe tal cosa como hilos de padre e hijo, pero no tiene mucho control sobre ese . Por ejemplo, está InheritableThreadLocal, donde puede almacenar variables para una jerarquía de subprocesos.

  • puede generar un nuevo hilo de un servlet. Prefiere la estructura de ejecutores de Java 5

  • si usa servlet 3.0, eche un vistazo a sus capacidades de asynchronous processing.

4

Cuando se desea que la aplicación para salir a pesar de que todavía tiene hilos de ejecución, que tiene para marcar su hilo como un hilo de utilidad:

 
Thread t = new Thread(myRunnable); 
t.setDaemon(true), 
t.start(); 

Esto es especialmente importante cuando se hace eso en una aplicación servidor, de lo contrario, el servidor no se puede cerrar!

Si lo hace en repetidas ocasiones es posible que desee considerar un ThreadPool para hacerlo más eficiente

Cuestiones relacionadas