【问题标题】:Is SpringMVC works on Single Thread Model or Multithread Model?Spring MVC 是在单线程模型还是多线程模型上工作?
【发布时间】:2014-12-05 14:50:57
【问题描述】:

我对单线程模型和多线程模型感到困惑。 SpringMVC 适用于哪种类型的模型?

谢谢

【问题讨论】:

  • 通常,Spring MVC 是线程安全的,除非 javadoc 明确说明。另外,“单/多线程模型”是 Servlet 规范所说的吗?如果是,请记住“单线程模型”与所有体面的 Web 应用程序无关,您将始终在多线程模型中工作(因此您可以假设所有最近的框架都在多线程模型中工作)。
  • 它是多线程的。更多信息请参考stackoverflow.com/questions/5980246/…

标签: java spring-mvc servlets


【解决方案1】:

SpringMVC 控制器是单例的,并且服务于并发请求。它们以多线程方式使用,因此必须编写为线程安全的(执行之间没有共享状态)。

【讨论】:

    【解决方案2】:

    如果您的意思是“Spring MVC 是否实现了 javax.servlet.SingleThreadModel 接口?”那么它不会。

    SingleThreadModel 保证“servlet 一次只处理一个请求”。 (来自 API 文档)。这通常由 servlet 容器管理,该容器将维护一个 Servlet 实例池并为每个传入请求分配一个。这是一种很少使用的执行模型,并且接口本身在 Java Servlet API 2.4 中已被弃用,没有直接替代。

    使用 Spring MVC,您应该假设您的控制器一次将处理多个请求,这使得您有责任确保您的处理是线程安全的。

    【讨论】:

      猜你喜欢
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      • 1970-01-01
      • 2018-08-16
      • 1970-01-01
      相关资源
      最近更新 更多