我知道多个线程共享一个Servlet实例来处理并发请求。在servlet中,我将调用其他线程安全类: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
的实例?ExternalClassOne
实例),那么单独使用它们会提高性能吗? Tomcat是否有任何"魔法"尽可能重用线程安全实例?答案 0 :(得分:1)
每次执行xdir
时都会创建实例,如上面的评论中所述。
小心单例:要获取实例需要同步方法调用,这会破坏应用程序的响应能力。
Tomcat不提供任何此类方法,而是Java库。您可以使用ThreadLocals。
否则,在应用程序启动时在new
中创建(线程安全)类并将它们放在应用程序上下文中,这样每个servlet都可以从那里获取它们。