-1
私は1つのサーブレットインスタンスが同時リクエストを処理するために複数のスレッドによって共有されていることを知っています。サーブレットの中で、私は他のスレッドセーフなクラス:ExternalClassOne
を呼び出して、ExternalClassTwo
を呼び出します。サーブレットコンテナは、サーブレットが使用する外部クラスをインスタンス化する方法を教えてください。
public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ExternalClassOne cOne = new ExternalClassOne();
cOne.doSomething();
//doSomething() will also use other classes like ExternalClassTwo, ExternalClassThree...
}
}
私はいくつかの質問を持っている:
- 作成されますどのように多くのクラス
ExternalClassOne
のインスタンス、ExternalClassTwo
? - リクエストごとにスレッドごとに作成された場合(100個の同時リクエスト= 100件の
ExternalClassOne
)、シングルトンでパフォーマンスが向上していますか?可能であれば、Tomcatはスレッドセーフなインスタンスを再利用するための "魔法"を持っていますか?
'new ExternalClassOne()'が実行されるたびに、新しいインスタンスが作成されます。それが「新」の目的です。 Tomcatはそれとは関係がなく、何も制御できません。新しい環境は、あなたの環境が何であれ、インスタンスを作成します。 –