在Java中设计Web应用程序时,我们何时需要Web应用程序中的单线程模型。
答案 0 :(得分:5)
几乎总是应该避免使用单线程模型。 (我假设你在谈论SingleThreadModel
接口。)基本上它是为了让人们不必考虑并发而引入的,但这是一个坏主意。并发性是Web应用程序中固有的 - 引入像单线程模型这样的瓶颈是错误的解决方案。正确的解决方案是更好地教育开发人员关于并发性,并引入更好的构建块来处理它。
从Java Servlet API 2.4开始,不推荐使用该接口,注意:
请注意,SingleThreadModel不会 解决所有线程安全问题。对于 例如,会话属性和静态 仍然可以访问变量 多个线程上的多个请求 同时,即使在 使用SingleThreadModel servlet。 建议开发人员 采取其他方式解决这些问题 问题而不是实现这一点 界面,如避免使用 实例变量或 同步代码块 访问这些资源。这个 在Servlet API中不推荐使用interface 版本2.4。
答案 1 :(得分:1)
当您的Servlet具有状态(这是一个坏主意)并且您想要阻止多个请求踩他们自己的脚趾(或数据)时。
我建议你避免它,因为在某些时候你会弄乱一些东西。而且,性能会像砖一样下降。
答案 2 :(得分:1)
servlet的单线程模型用于表示servlet无法处理来自客户端连接的多个并发线程。将servlet设置为单线程模型会导致servlet容器(应用程序服务器)为每个客户端创建一个servlet实例。
对servlet使用单线程模型是最好的做法不。每个客户端连接保留的数据通常存储在客户端Session对象中。