有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么servlet的init()方法在不同的线程中运行?

这是《头先servlet和JSP》一书的摘录。我不明白的是为什么init()方法单独在线程A中运行,而后面的service()方法在另一个线程B中运行

这是否意味着从浏览器到servlet的每个请求都有两个线程?或者init()对于容器可能创建的所有servlet实例都是通用的吗?这是错误的,因为它不是静态方法

enter image description here


共 (2) 个答案

  1. # 1 楼答案

    servlet只被init()初始化一次,但对于每个新请求,都会创建一个新线程,或从池中分配一个新线程,以在适当的方法上调用该servlet实例


    对于每个新请求,HttpRequestHttpResponse对象都是新的,线程,但不是servlet实例

  2. # 2 楼答案

    此描述适用于单个servlet实例。直观地说,您可以将其视为在其他线程中处理请求,而不是阻塞主线程。如果请求需要花费大量时间,那么冻结应用程序以提供服务是没有意义的,因此每个请求都会导致fork