我正在编写一个Tomcat应用程序,该应用程序需要在不同的请求之间维护一些内部状态,因此我需要在Tomcat创建的不同线程之间共享某些内容。我的问题是,如果我编写这样的代码,它将Map(static在该类中)在Tomcat创建的线程之间共享。
Map
static
public class sessionManager extends HttpServlet { private static HashMap<Integer, String> Map; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // logic } }
我想我真的不知道Tomcat是如何从一个 类* 创建许多 线程的 。 *
我的问题是,如果我编写这样的代码,将在Tomcat创建的线程之间共享Map(static属于该类)?
是。它将(可能)在多个线程之间共享。
我想我真正不明白的是Tomcat如何从单个类创建许多线程。
线程与类无关。线程是指令序列。它代表代码的执行。
Tomcat产生许多用于处理请求的线程。它将生成您的sessionManager类的单个实例。所有线程都将使用此实例来处理请求。然后他们每个人都可以访问该Map字段。您需要根据需要应用自己的外部同步,以使其线程安全。
sessionManager