8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Servlet 似乎可以同步处理多个并发浏览器请求

Nicholas R. Grant 1月前

55 0

据我所知,Java Servlet 正在同时处理多个请求,并且我已经通过 StackOverflow 和 Google 进行了搜索,并证实了我的想法。但是我很困惑,对吧...

据我所知,Java Servlet 可以同时处理多个请求,我已经搜索了 StackOverflow 和 Google,并证实了我的想法。但是我现在很困惑,我编写了一个简单的 servlet,似乎表现出阻塞行为。

所以我有一个简单的 Servlet:

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");

    }
}

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

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)做了与上述相同的操作,它做了同样的事情。

有什么指点吗?

谢谢

帖子版权声明 1、本帖标题:Servlet 似乎可以同步处理多个并发浏览器请求
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Nicholas R. Grant在本站《spring-mvc》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 您的浏览器可能会序列化请求,如果您从两台不同的计算机或使用两个不同的浏览器尝试此操作,会发生什么?(即 iexploere 和 firefox)您还可以检查 http 访问日志以查看请求是否同时到达您的 servlet 容器。

返回
作者最近主题: