2013-06-06 12 views
6

この質問はこれまでに質問されていましたが、私はさらに質問したいと思います。サーブレット:シングルトン、シングルスレッドまたはマルチインスタンスマルチスレッド

  1. サーブレットはシングルトンですか? 私によれば、それらはコンテナによってのみ初期化されますが、まだシングルトンではありませんか?なぜ ??

  2. は(忘れ程度javax.servlet.SingleThreadModelクラス)サーブレットシングルスレッドまたはマルチスレッド化されてい すなわち、単一のサーブレットに対する複数の要求があるときに何が起こります? それらがconncurrentlyで実行される場合、それはマルチスレッドであることを意味しますか? そのマルチスレッドの場合、各スレッドはサーブレットのインスタンスを持ちますが、これは第1のポイントと矛盾します!!新しい要求をtheresのたびに私は考えて何

は、 で、コンテナは、着信要求のための新しいスレッドを作成し、それは、サーブレットのサービスメソッドにコントロールを呼び出すか、派遣という点で、REQ1を言います。今この実行は並行して起こります。私はそうだと思います...

私の働きはMVC環境で同じですか? (Struts 1/2、Springs)

答えて

5

ただ1つのインスタンスに存在するということは、マルチスレッドではないということではありません。より多くのスレッドは、同時に同じインスタンスの同じメソッドを呼び出すことができます。 サーブレットは絶対にマルチスレッドです。

2

実装によって異なります。サーブレット・インタフェースは指定しません。 http://docs.oracle.com/javaee/5/api/javax/servlet/Servlet.html

ただし、HttpServletが表示されている場合は、同期する必要があることがわかります。 http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServlet.html

+1

が「同期させる必要がある」...すべてのものを示している - つまり、コードはいくつかによって実行されますスレッド。 –

3

サーブレットはマルチスレッド化されています。 サーブレットをシングルスレッドにするために "implements SingleThreadModel"を使うことができるので、リクエストごとに新しいオブジェクトが作成されます。

最近、このインタフェースSingleThreadModelをはおそらく

関連する問題