2009-03-15 6 views
3

Wenn ein Servlet die Störung eines einzelnen Threadmodells implementiert, stellt Servlet-Container sicher, dass Servlets jeweils nur eine Anfrage bearbeiten? Selbst Single-Thread-Modell-Schnittstelle hat keine Methoden zu. Danke.Modell mit einem Thread

Antwort

2

Der Servlet-Container erstellt einen Pool von Servlet-Instanzen und verfolgt, welche Instanzen derzeit "verwendet" werden. Wenn alle Instanzen "in Verwendung" sind, wenn eine neue Anfrage eingeht, kann der Container entweder warten, bis eine vorhandene Instanz frei wird, oder eine neue Instanz erstellen, um die Anfrage zu bearbeiten.

Das Single-Thread-Modell ist jedoch nicht weit verbreitet - es ist besser, das Servlet selbst statuslos zu machen und mehrere Anfragen gleichzeitig zu behandeln.

+0

Bitte erklären Sie, warum STM nicht weit verbreitet ist? – Warrior

+0

Sie müssen sowieso an anderer Stelle Threading-Probleme ausarbeiten - Sie können in der Servlet-Instanz keinen sinnvollen veränderlichen Zustand speichern, da es mehrere Instanzen gibt - Sie können also auch das einfachere Threading-Modell verwenden. Zumindest ist das meine Meinung. –

+0

So können wir eine lokale Variable innerhalb der Servicemethode anstelle der Instanzvariable haben – Warrior

1

Die Idee ist nicht auf Single verlassen Problem zu kümmern Threading. Da Servlet-Container nicht verpflichtet sind, sich an den Einzelthreadmodel-Vertrag zu binden, ist es ratsam, sich nicht auf den Container zu verlassen, um mehrere Instanzen von Servlets zu instanziieren.