【问题标题】:ThreadPoolExecutor.run and Servlet re-initializationThreadPoolExecutor.run 和 Servlet 重新初始化
【发布时间】:2014-10-12 03:40:21
【问题描述】:

This link 表示早期版本的 Tomcat(7.0.54 之前)通过 ThreadPoolExecutor.run()“更新其线程”。

为什么包含的 Servlet 的 init() 方法似乎没有被再次调用?

【问题讨论】:

标签: java tomcat servlets tomcat7


【解决方案1】:

一个 Servlet 只初始化一次,无论是在 Web 应用程序启动时还是在第一次使用时。

然后将使用同一个实例来处理所有传入的请求,如有必要,甚至可以同时处理多个请求(除非您使用不推荐使用的选项来同步访问,但即便如此,也只会有一个实例和一个队列的请求)。

【讨论】:

  • @b16db0 线程被重新初始化,但 servlet 实例为每个应用程序缓存并在线程实例上重用。
  • Servlet 不绑定到单个请求工作线程。它们在它们之间共享。
  • @Thilo 所以,不管有很多请求进来,Servlet 实例都只有一个?
  • 没错。每个配置的 Servlet 一个实例(您可以多次配置同一个类,但每个配置只有一个实例)。
猜你喜欢
  • 1970-01-01
  • 2021-10-27
  • 1970-01-01
  • 1970-01-01
  • 2016-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多