首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Servlet似乎同时处理多个并发的浏览器请求

Servlet似乎同时处理多个并发的浏览器请求
EN

Stack Overflow用户
提问于 2011-11-04 22:53:03
回答 1查看 7.8K关注 0票数 24

据我所知,Java Servlet正在同时处理多个请求,我已经在StackOverflow和谷歌上搜索过,并确认了我的想法。然而,我现在很困惑,我写了一个简单的servlet,它似乎显示了阻塞行为。

所以我有一个简单的Servlet:

代码语言:javascript
复制
public class MyServlet extends HttpServlet 
{
    private static final long serialVersionUID = 2628320200587071622L;

    private static final Logger logger = Logger.getLogger(MyServlet.class);

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException 
    {
        logger.info("[doGet] Test before");

        try {
            Thread.sleep(60000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        logger.info("[doGet] Test after");

        resp.setContentType("text/plain");
        resp.getWriter().write("OK");

    }
}

然后我有两个浏览器窗口,我同时打开了我的Servlet。结果是第一个请求阻塞了第二个请求。日志还显示:

代码语言:javascript
复制
10:49:05,088 [http-8383-Processor14]  INFO MyServlet - [doGet] Test before
10:50:05,096 [http-8383-Processor14]  INFO MyServlet - [doGet] Test after
10:50:05,106 [http-8383-Processor22]  INFO MyServlet - [doGet] Test before
10:51:05,112 [http-8383-Processor22]  INFO MyServlet - [doGet] Test after

我觉得我好像错过了什么..。Servlet应该能够处理并发请求,但它似乎没有做到这一点。我还在服务方法上做了与上面相同的操作,而不是doGet,它也做了同样的事情。

有什么建议吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-04 23:01:06

您的浏览器显然在不同的窗口中使用相同的HTTP连接。servlet容器为每个HTTP连接使用一个线程,而不是每个HTTP请求。您应该运行两个物理上不同的two浏览器来正确测试这一点。例如,一个Firefox和一个Chrome。

票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8011138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档