サーブレットのコードを同期ブロックと同期させることができます。しかし、私は、サーブレットのインスタンスが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. Tomcatサーブレットの同期
- 3. サーブレット内のグローバル変数の同期化
- 4. 同じ非同期タスク(Windows Phone)の複数のインスタンス
- 5. 同じプログラムの複数のインスタンスを同期させる
- 6. 同じHTMLページの複数のサーブレット
- 7. サーブレットdoPost内の同期ブロック
- 8. GAE環境内の複数のJVMインスタンスとのJavaの同期
- 9. 1つのキューインスタンスを複数のRedisインスタンスと同期させる
- 10. オブジェクトの複数のインスタンスを同期させました
- 11. 複数のサーブレット
- 12. サービスファブリック - 同じWebサービスの複数のインスタンス間での設定の同期
- 13. 複数のクライアントの同期
- 14. 複数のオーディオキューの同期
- 15. サーブレット3.0非同期タイムアウト
- 16. Java - サーブレット3.0の非同期とサーブレット3.1のNIOとの比較
- 17. 春の非同期サーブレットの応答
- 18. 複数のMediaItemを同期
- 19. UIScrollViewの同じUIViewの複数のインスタンス
- 20. Dockerの同じプログラムの複数のインスタンス
- 21. 複数のインスタンスを初期化する
- 22. 同じVulkanサブパスの複数のインスタンス
- 23. 同じフォームの複数のインスタンスをc#
- 24. 同じResourceDictionaryの複数のインスタンス
- 25. 同時に複数のlevelDBデータベースのインスタンス
- 26. 複数のJFrameインスタンス上の同じコンポーネント
- 27. 同じインスタンス上の複数のワーカーロール
- 28. 複数の非同期テストと期待
- 29. サーブレット3.0 APIの非同期サポート
- 30. javaサーブレットでの非同期ファイルアップロード
ここであなたの質問は何ですか? – 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