2013-06-06 15 views
6

Questa domanda è stata posta in precedenza e discussa in precedenza, ma voglio chiedercelo ulteriormente.Servlet: Singleton, Singlethread o Multi Instance Multithread

  1. Servlet Singleton o no? Secondo me sono inizializzati solo dal container ma non sono ancora singleton ?? perché ??

  2. Sono servlet Single Thread o multi filettato (Dimenticare javax.servlet.SingleThreadModel classe) vale a dire ciò che accade quando ci sono più richieste per un singolo servlet ?? Se sono eseguiti in modo conncorrente, significa che è multi-thread ?? e se il suo multi-threaded allora ogni thread avrà un'istanza del servlet, che contraddice con il 1 ° punto !!

quello che penso è, Ogni volta che ce n'è una nuova richiesta, il contenitore crea un nuovo thread per la richiesta in ingresso dire Req1, nel senso che chiama o invia il controllo al metodo del servizio di servlet. Ora questa esecuzione avviene in concomitanza ... suppongo di sì ...

Il mio funzionamento è lo stesso in un ambiente MVC ?? (per esempio Struts 1/2, Springs)

risposta

5

Il fatto che esista solo un'istanza non significa che non è multithread. Più thread può chiamare contemporaneamente lo stesso metodo della stessa istanza. Le servlet sono assolutamente multithread.

3

Le servlet sono multithread: questa è la base della loro efficienza. Si può usare "implements SingleThreadModel" per creare un servlet a thread singolo, quindi per ogni richiesta verrà creato un nuovo oggetto.

Recentemente questa interfaccia è stata sconsigliata SingleThreadModel