Java 是否异步处理对HttpServlet的http请求

Java 是否异步处理对HttpServlet的http请求,java,multithreading,servlets,Java,Multithreading,Servlets,我被告知java servlet可以异步运行。但这是否意味着对单个servlet的请求是异步处理的,或者说只有对不同servlet的请求是异步的 基本上,我的项目中有一个servlet: public class DummyServlet extends HttpServlet { ... protected void doGet(HttpServletRequest request, HttpServletResponse response) { response.setConten

我被告知java servlet可以异步运行。但这是否意味着对单个servlet的请求是异步处理的,或者说只有对不同servlet的请求是异步的

基本上,我的项目中有一个servlet:

public class DummyServlet extends HttpServlet
{
...
protected void doGet(HttpServletRequest request, HttpServletResponse response) 
{
    response.setContentType("text/plain; charset=utf-8");

    PrintWriter writer = new PrintWriter(response.getOutputStream());

    writer.write("DummyServlet invocation");

    System.out.print("Invocation: " + counter);

        Thread.sleep(5000);

    System.out.println(" ... done.");
    counter++;

    writer.flush();
    writer.close();
}
现在,当我同时发出两个请求时,第二个请求等待第一个请求结束。 在这种情况下,如何实现异步行为


更新:请求是异步处理的,只是我的请求不是异步生成的。

通过实现,每个servlet请求都在不同的线程中运行。因此,这是一种异步行为。

并不能解释他正在经历的行为。@aioobe-是的,但可能他感到困惑,并且在现实中它们是分开运行的。我想不出任何原因。读完这篇文章后,我意识到浏览器没有以异步方式生成请求。@comco-什么让你认为这是同步的?可能第二个请求发送得比较慢,而第一个请求已经找到了。servlet中的方法是同步的,每个请求都是同步处理的。但是,容器对单个请求使用单独的线程,因此它们应该在不同的线程中同时执行。你认为为什么这两个调用是串行执行的?
现在,当我同时发出两个请求时,第二个会等待第一个请求结束对于给定的代码,它不是真的,两者都将在不同的线程中使用。您在输出中看到了什么?