5

すべてのサーブレットインスタンス変数を「揮発性」としてマークする(または同期されたセクション内からそれらにアクセスする)必要がありますか?「init」メソッドで定義され、後で変更されないものを含めますか?

「init」メソッドが1つのスレッドによって呼び出され、変数が別のスレッドによってアクセスされることを理解しているので、必要なようです。またはそうでないかもしれません?「init」メソッドが終了したときに、インスタンス変数の現在の値が他のすべてのスレッドに表示されることを保証するメカニズムはありますか?

4

1 に答える 1

6

サーブレットコンテナは、サーブレットの初期化とその呼び出しの間にメモリバリアがあることを確認します。何もする必要はありません。

注:仕様にはそのような要件はありませんが、それを行わないのはコンテナーの失敗だと思います。ところで、GenericServletでは、ServletConfig configinitメソッドによって初期化されたインスタンス変数は揮発性としてマークされていません。

于 2012-07-30T10:56:49.977 に答える