【发布时间】:2011-09-26 18:08:59
【问题描述】:
我目前正在构建一个基于 java-servlet 的 Web 应用程序,它应该为相当多的用户提供它的服务(不要问我“很多”是多少 :-) - 我还不知道) .
但是,在使用应用程序时,服务器端可能会发生一些耗时的处理。 为了避免糟糕的 UI 响应,我决定将这些处理操作移到它们自己的线程中。 这意味着一旦用户登录,可能会在后台运行 1-10 个线程(每个用户!)。
我曾经听说在 Web 应用程序中使用多个线程是一个“坏主意”。
这是真的吗?如果是的话:为什么?
更新:我忘了提到我的应用程序严重依赖 ajax 调用。每个用户操作都会导致一个新的 ajax 调用。因此,当主 servlet 线程忙时,ajax 调用需要很长时间来处理。这就是我想使用多个线程的原因。
【问题讨论】:
-
为什么 UI 会“冻结”?听起来你在用原生术语思考......在网络应用程序中,你应该使用 AJAX,否则页面加载速度会很慢,而不是真正的“冻结”。
-
我忘了提到我的应用程序严重依赖 ajax 调用。每个用户操作都会导致一个新的 ajax 调用。因此,当主 servlet 线程忙时,ajax 调用需要很长时间来处理。
-
当然,但这与“UI 冻结”不同...
-
@Jon Skeet 你是对的。很抱歉造成误解。
-
“当主 servlet 线程忙时”是什么让你认为只有一个? Servlet 容器(通常)在来自池的单独线程中处理每个请求,并不是所有请求都有一个线程。
标签: java multithreading