任何人都可以在Web应用程序中详细说明单线程模型吗?

时间:2010-01-06 09:15:47

标签: java

在Java中设计Web应用程序时,我们何时需要Web应用程序中的单线程模型。

3 个答案:

答案 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对象中。