2010-01-06 97 views

回答

5

几乎总是应该避免使用单线程模型。 (我假设你正在谈论接口SingleThreadModel)。基本上它是为了避免人们考虑并发性而引入的,但这不是一个好主意。并发是Web应用程序固有的 - 引入像单线程模式这样的瓶颈是错误的解决方案。正确的解决方案是让开发人员更好地了解并发性,并引入更好的构建块来处理它。

接口被弃用了Java Servlet API 2.4,与此注:

注意SingleThreadModel并没有提供 解决所有的线程安全问题。对于 例如,会话属性和静态变量 仍然可以通过在多个线程 多个请求同时访问,即使使用 了SingleThreadModel的servlet。 建议显影剂 采取其他手段来解决,而不是实现此 接口,如避免使用一个实例变量的 或 同步访问这些资源的代码 的块那些 问题。这个 接口在Servlet API 版本2.4中已弃用。

1

当你的Servlet有状态(这是一个坏主意),并且你想要防止多个请求踩在他们自己的脚趾(或数据)上。

我会建议你避免它,因为在某些时候你会搞砸了。此外,性能下降就像一块砖头。

1

servlet的单线程模型用于表示servlet无法处理来自客户端连接的多个并发线程。将servlet设置为单线程模型会导致servlet容器(应用程序服务器)为每个客户端创建一个servlet实例。

最好的做法是而不是使用servlet的单线程模型。每个客户端连接保存的数据通常存储在客户端会话对象中。

相关问题