[2063] Re:info.servlet.serviceについて
投稿者:くまきち
2017/12/19 21:37:28
なるほど、了解です!ありがとうございます。
ですが、もう少し分からないことがあります。
マルチスレッドで動くとなると、クラスがRunnableをimplementsして...のような
ルールが必要なのかと思っていたのですが、HttpServletは、そのようになっていません。
HenacatでRunnableをimplementsしているのはServerThreadだけだと思いますが、
もしかしてマルチスレッドの各スレッドから呼び出されるクラスは、ルールの適用無しでも
(結果として)マルチスレッドで動くという事なのでしょうか?
入門書を読め!という話なのかも知れませんが、どうぞ宜しくお願いします。
>>分からないのは「info.servlet」がnullでなければ、同じインスタンスが
>>使いまわされるのに、並行して複数個所から使いまわされていいんだっけ?
>>ということです。
>
>p.92の補足にも書きましたが、サーブレットのインスタンスはひとつだけ生成され、
>すべてのリクエストで共有されます。
>よって、インスタンスフィールドを使えば、複数のスレッド間で競合が起きる
>可能性がありますし、(補足にも書いたように)リクエスト単位やユーザ単位で
>持つべき情報をサーブレットのインスタンスフィールドで保持してはいけません。
>
>ただし、ローカル変数はスレッドごとに存在するので、ローカル変数(メソッドの
>引数含む)だけを使っている限り、同じインスタンスのメソッドを複数のスレッドで
>呼び出すことは問題ありません。
>