2014-10-10 137 views
1

我对单线程模型和多线程模型感到困惑。 SpringMVC是什么类型的模型?SpringMVC是在单线程模型还是多线程模型上工作?

谢谢

+1

一般来说,Spring MVC是线程安全的,除非javadoc另有说明。另外,'单/多线程模型'是Servlet规范谈到的吗?如果是的话,请记住,'单线程模型'对于所有体面的Web应用程序都是不相关的,你将一直使用多线程模型(所以你可以假设所有最近的框架都在多线程模型中工作)。 – 2014-10-10 12:24:09

+0

它的多线程。请参阅http://stackoverflow.com/questions/5980246/can-a-spring-mvc-app-be-multithreaded-even-if-its-servlets-are-获取更多信息 – Vishnu 2014-10-10 12:27:37

回答

5

SpringMVC控制器是单身人士,并提供并发请求。它们以多线程方式使用,因此必须写成线程安全(执行之间不共享状态)。

6

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

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

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