gpt4 book ai didi

java - 服务器创建的实例什么时候死?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:22:43 25 4
gpt4 key购买 nike

以下程序:

public class SimpleCounter extends HttpServlet {

int counter=0;

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/plain");
PrintWriter writer = response.getWriter();
counter++;
writer.println("accessed " + counter + " times" );
}
}

每次我访问这个 servlet 的 url 时打印计数器的增量值。我读到服务器创建了这个 servlet 的一个实例,每当有对此 servlet 的请求时,一个新线程就会将该请求映射到服务器创建的特殊实例。

服务器创建的实例(将请求映射到哪个线程)何时死亡?新请求创建的线程何时死亡?

最佳答案

servlet 实例在您的 webapp 启动时创建,或者在第一次需要时创建(如果设置了 lazy-init)。当您的 webapp 停止时,当它被 GC 处理时,它会被处理掉。在正常的生产环境中,我敢说这从未真正发生过(不包括部署新版本)。

大多数(如果不是全部)servlet 容器都使用线程池。这意味着他们重用线程来处理请求。所以这些线程永远不会死;他们完成请求后返回到池中。

当然,当你关闭服务器时它们确实会死掉:)

从您的应用程序的角度来看,您确实应该尝试使您的 servlet 无状态,并且您可以安全地认为每个请求都在其自己的专用线程中执行。

关于java - 服务器创建的实例什么时候死?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9067287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com