2011-01-29 25 views
6

Vorrei fare una domanda di base prima di passare alla mia domanda principale.Posso generare un thread da un servlet?

Diciamo che sto eseguendo un semplice programma Java, che genera un thread nella funzione principale. Il thread continuerà a essere eseguito al termine della funzione principale? Esiste un concetto di relazioni padre/figlio tra i thread.

Ho un servlet che richiede molto tempo per elaborare una richiesta (5 minuti). Posso generare un thread in background dal servlet principale per gestire il lavoro & ritorno presto. Il thread in background continuerebbe a funzionare anche quando il servlet principale ha terminato l'elaborazione?

risposta

2
  • C'è una cosa come le discussioni padre e figlio, ma non si hanno un sacco di controllo su quella . Ad esempio, c'è InheritableThreadLocal, in cui è possibile memorizzare le variabili per una gerarchia di thread.

  • è possibile generare una nuova discussione da un servlet. Preferisci il framework degli esecutori Java 5

  • se si utilizza il servlet 3.0, dare un'occhiata alle sue funzionalità asynchronous processing.

4

Quando si desidera che l'applicazione per uscire, anche se avete ancora thread in esecuzione, è avete per segnare il tuo thread come un thread demone:

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

Questo è particolarmente importante quando lo si fa in un'applicazione server, altrimenti il ​​server non può essere spento!

Se lo fai più volte si potrebbe prendere in considerazione un ThreadPool per rendere questa più efficiente

Problemi correlati