「servletはマルチスレッドを意識して実装しなくてはいけない」とよく聞きます。
マルチスレッドを意識しなければならないのは、HttpServletを継承したクラスのみなのでしょうか?
それとも、そこからインスタンス化される汎用クラスなどもマルチスレッドを意識し、インスタンス変数は悪とされるのでしょうか?
となると、汎用クラスのコンストラクタ引数に値を渡し汎用クラス内でインスタンス変数を使用するってコーディングは完全なNGになりますよね。
HttpServlet継承のサーブレットからインスタンス化されれば、都度個別のメモリが割り当てられると思うのですが・・。
ご存知な方いらっしゃいましたらご教授お願いいたします。
以上
No.2ベストアンサー
- 回答日時:
> (1)サーブレットとして動く全てのクラスを現しているのでしょうか?
> (たとえば、Strutsなどで動く個別アクションモジュールも含めるのか、の意です)
HttpServlet、Actionクラスです。
> (2)それともHttpServletを継承したクラスのことでしょうか?
> (インスタンス化される個別アクションモジュールは含まない)
Strutsの場合、Actionクラスを継承したクラスも初めて実行された時にインスタンス化されコンテナに常駐されます。以降の実行はこのインスタンスのスレッドとして実行されます。よってservletのインスタンス変数は共有されるので意識しないといけません。
・・回答になっているでしょうか?
No.3
- 回答日時:
まず、クライアントからのひとつひとつのリクエストが
スレッドとして実行される、ということを理解するべき
だと思います。
サーブレット内で new したオブジェクトは、
各リクエストごとに生成されますから、
スレッドを意識する必要はないのですが、
このオブジェクトをアプリケーションスコープなどに
格納し、任意のリクエストがそれにアクセス可能と
なるようなコードを書けば、そのオブジェクトのクラスは
スレッドセーフに作成しなければならなくなります。
No.1
- 回答日時:
servletは初めて実行された時にインスタンス化されコンテナに常駐されます。
以降の実行はこのインスタンスのスレッドとして実行されます。よってservletのインスタンス変数は共有されるので意識しないといけません。ただし、servletのメソッド内はローカルなのでbean等のスコープはそのメソッド内で完結します。
この回答への補足
早速のご回答ありがとうございます。
重ねて質問になりますが、Strutsさんがおっしゃる「servlet」の定義は
(1)サーブレットとして動く全てのクラスを現しているのでしょうか?
(たとえば、Strutsなどで動く個別アクションモジュールも含めるのか、の意です)
(2)それともHttpServletを継承したクラスのことでしょうか?
(インスタンス化される個別アクションモジュールは含まない)
お手数ですがお教えください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
- Java 複数TBLのオブジェクトを1つの変数(オブジェクト)でまとめて管理したい 1 2022/12/17 00:12
- リフォーム・リノベーション 給水栓取り付けネジについて 4 2022/08/21 14:21
- 日本語 「災害級の暑さ」と言う言い方について 12 2023/08/02 20:36
- その他(コンピューター・テクノロジー) 50台の織機から回転数を取得・集計しモニターに表示したい 2 2022/11/05 15:48
- その他(SNS・コミュニケーションサービス) 大至急お助け下さい。マストドンの或るインスタンスに登録したいのですが、ユーザー名で半角英数とアンダー 1 2023/08/25 10:33
- CPU・メモリ・マザーボード APUゲーム性能 1 2022/12/25 01:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数名の付け方
-
private static という変数の修飾
-
インスタンス参照でアクセスで...
-
C# インスタンスの破棄
-
複数の変数を宣言する時、同時...
-
C#において、同じインスタンス...
-
VB.NET getとsetの概念がわかり...
-
他のファイルの変数参照
-
生成したインスタンスを削除す...
-
非staticフィールドを参照でき...
-
VB.netで標準モジュールからフ...
-
変数の参照でエラーが出てしま...
-
ファイル読み込み/書き込み速度...
-
VB.NET Newしたものを変数に代...
-
フィールドでのnewとコンストラ...
-
フォームの存在をチェックする方法
-
整数の引数に列挙を使ったとき
-
インスタンスを同じ名前で作成...
-
文字列を日付に変換でParseExce...
-
SerialPort処理でInvokeメソッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数名の付け方
-
インスタンス参照でアクセスで...
-
複数の変数を宣言する時、同時...
-
private static という変数の修飾
-
VB.NET getとsetの概念がわかり...
-
C#において、同じインスタンス...
-
生成したインスタンスを削除す...
-
C# インスタンスの破棄
-
newしないインスタンス?実体化...
-
SQLを連続発行する時の正しい(?...
-
「インスタンス」の意味をわか...
-
文字列を日付に変換でParseExce...
-
変数の参照でエラーが出てしま...
-
フォームの存在をチェックする方法
-
javaのクラスの作り方、エラー...
-
オブジェクト参照がオブジェク...
-
String a = "a"; と String b =...
-
エクセル(複数インスタンス)...
-
C#「オブジェクト参照が必要で...
-
他のファイルの変数参照
おすすめ情報