- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:サーブレット、Strutsのスレッドの動きについて)
サーブレット、Strutsのスレッドの動きについて
このQ&Aのポイント
- サーブレット、Strutsにおけるスレッドの動きについて調査しています。1つめの質問は、1リクエスト1インスタンスではないことを確認しましたが、10台の端末からほぼ同時に同一アクションへサブミットした場合のスレッドの挙動が気になります。
- 2つめの質問は、BarActionクラス内で生成されたHogeLogicクラスのインスタンスがスレッドセーフかどうかについてです。HogeLogicクラス内で宣言されているFooService.serviceがスレッドセーフかどうかも知りたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
insert内の処理でスレッドセーフでないクラスを使用すればスレッドセーフでなくなります。 したがってクラスが完成するまでスレッドセーフであるかないかはわかりません。 修正ひとつでスレッドセーフだったクラスも、そうでなくなります。 スレッドセーフの判断基準を自分で理解し、完成したクラスを見て判断するしかないですね。
その他の回答 (1)
- ww-_-ww
- ベストアンサー率51% (46/89)
回答No.1
FooService.serviceがスレッドセーフか否かは中身がわからないので判断できません。 wikiにも書いてありますので参考にしてみてください。(スレッドセーフかどうかの判断基準) http://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E3%82%BB%E3%83%BC%E3%83%95 簡単な例を言うと、staticな変数(クラス変数)をFooService.serviceが宣言していて、その変数を同期化等を行わず使用した場合はスレッドセーフにはなりません。
補足
説明不測でした。 FooServiceにstaticな変数(クラス変数)はありません。 FooService内は下記のようなイメージです。 FooService { HogeDao dao; insert() { //insert処理 } getDao() { //ただのゲッター } setDao(HogeDao dao) { // ただのセッター } } また、URLのスレッドセーフかどうかの判断基準をみましたが、該当する項目はありせんでした。