【发布时间】:2019-08-23 08:25:34
【问题描述】:
这是《Head First Servlets and JSP》一书的节选。我不明白为什么init() 方法单独在线程A 中运行,而service() 方法在另一个线程B 之后运行。
这是否意味着从浏览器到 servlet 的每个请求都有两个线程?或者init() 对于容器可能创建的所有 servlet 实例是通用的?那是错误的,因为它不是静态方法?
【问题讨论】:
-
init()在 servlet 初始化期间只运行一次,并在启动应用程序的线程中运行。另一方面,service()在随机容器线程上为每个请求调用,通常取自线程池。 -
正如描述中所写:init 在启动时运行。它不会针对每个请求运行。这有点误导,因为不是每个请求都有不同的线程,但想法是它不是单线程的。
标签: java multithreading jsp tomcat servlets