一尘不染

Tomcat如何在内部创建线程?

tomcat

我正在编写一个Tomcat应用程序,该应用程序需要在不同的请求之间维护一些内部状态,因此我需要在Tomcat创建的不同线程之间共享某些内容。我的问题是,如果我编写这样的代码,它将Mapstatic在该类中)在Tomcat创建的线程之间共享。

public class sessionManager extends HttpServlet {
    private static HashMap<Integer, String> Map;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // logic
    }
}

我想我真的不知道Tomcat是如何从一个 类* 创建许多 线程的*


阅读 438

收藏
2020-06-16

共1个答案

一尘不染

我的问题是,如果我编写这样的代码,将在Tomcat创建的线程之间共享Mapstatic属于该类)?

是。它将(可能)在多个线程之间共享。

我想我真正不明白的是Tomcat如何从单个类创建许多线程。

线程与类无关。线程是指令序列。它代表代码的执行。

Tomcat产生许多用于处理请求的线程。它将生成您的sessionManager类的单个实例。所有线程都将使用此实例来处理请求。然后他们每个人都可以访问该Map字段。您需要根据需要应用自己的外部同步,以使其线程安全。

2020-06-16