サーブレットのコードを同期ブロックと同期させることができます。しかし、私は、サーブレットのインスタンスが1つしかないのに対して、サーブレットコンテナがインスタンスのプールを保持していることが多いことも読んでいます。確かにこれは、要求されたスレッドがどのインスタンスを選択するかわからないため、同期ブロックが動作することが保証されていないことを意味します。複数のインスタンスのサーブレット同期
答えて
サーブレットコンテナには、要求を処理するためのスレッドプールがあります。つまり、サーブレットコードを実行するスレッドが複数存在する可能性があります。つまり、共有可能な変更可能なデータへのアクセスを適切に同期させる必要があります。
質問はサーブレットシングルスレッドを作成する方法であれば、アプローチの一つはSingleThreadModelをインターフェイスを実装することですが、これは今てきましたがを非推奨しました。仕様の
http://docs.oracle.com/javaee/1.4/api/javax/servlet/SingleThreadModel.html
2.2(3.0)は言う:分散環境(デフォルト)でホストされていないサーブレットの
、 サーブレットコンテナは、サーブレットごとに1つのインスタンスのみを使用する必要があります。 宣言
したがって、コンテナがインスタンスのプールを使用する場合、その仕様に違反しています。サーブレットの開発者は、複数のスレッドがサーブレットに同時にアクセスできることを知っているため、コンテナがそれを行う理由はわかりません。したがって、サーブレットはスレッドセーフでなければなりません。
ありがとう、これは私が期待するものです。私は、Tomcatが各サーブレットのインスタンスを1つ実装していることを知りました。どちらかと言えば誤解されているか、実際には一部のコンテナが仕様に違反しています。 – Jon
「スレッドのプール」と「サーブレットインスタンスのプール」を混同していることがあります。 –
- 1. ruby:mechanizeの複数の同一インスタンスまたは同期インスタンス?
- 2. 同じプログラムの複数のインスタンスを同期させる
- 3. 同じ非同期タスク(Windows Phone)の複数のインスタンス
- 4. Tomcatサーブレットの同期
- 5. サーブレット内のグローバル変数の同期化
- 6. 同じHTMLページの複数のサーブレット
- 7. 1つのキューインスタンスを複数のRedisインスタンスと同期させる
- 8. 複数のクライアントの同期
- 9. 複数のMediaItemを同期
- 10. サーブレット3.0非同期タイムアウト
- 11. 同じインスタンス上の複数のワーカーロール
- 12. 同時に複数のlevelDBデータベースのインスタンス
- 13. 春の非同期サーブレットの応答
- 14. サーブレット3.0 APIの非同期サポート
- 15. javaサーブレットでの非同期ファイルアップロード
- 16. サーブレット3 Tomcat 7での非同期タスク
- 17. 複数のマシンでのOutlookの同期
- 18. 複数のブラウザのWindows同期
- 19. Emacs-Diredの複数の非同期シェルコマンド?
- 20. 複数のサーバー間での同期化?
- 21. サーブレットでのインスタンス変数はスレッドセーフ
- 22. IOS Obj C:同じ値を持つ複数のIBOutletインスタンスを初期化する
- 23. サーブレットは複数の同時ブラウザリクエストを同期して処理しているようです
- 24. 複数画像の非同期ダウンロード
- 25. 複数のデバイス間でタイムスタンプを同期
- 26. 複数のマシン間で同期実行
- 27. 複数の非同期Webクライアントコール(シルバー4)
- 28. 複数のリクエスト・ハンドル・サーブレット
- 29. 同時にインスタンス化関数と変数の初期化
- 30. 複数パラメータ型同義語インスタンス
ここであなたの質問は何ですか? – milan
私はあなたがBalusCからこれらの2つの答えを読むべきだと思います:[サーブレットはどのように機能しますか?](http://stackoverflow.com/questions/3106452/how-do-servlets-work-instantiation-session-variables-and-multithreading/ 3106909#3106909)と[サーブレットのインスタンス](http://stackoverflow.com/questions/2183974/difference-each-instance-of-servlet-and-each-thread-of-servlet-in-servlets/2184147#2184147) –
ありがとう、これらの2つの答えからのコンセンサスは、サーブレットごとに1つのインスタンスが使用されるため、同期が機能することです。 – Jon