Java JSP Servlet多线程问题

Java JSP Servlet多线程问题,java,multithreading,jsp,servlets,thread-safety,Java,Multithreading,Jsp,Servlets,Thread Safety,我有一个Servlet,它从客户机获取请求,然后Servlet通过http请求/响应从5个不同的服务器收集数据(每个服务器需要1秒才能响应),并将数据发送回客户机 问题是,当客户端必须等待6秒以等待响应时,时间太长。 因此,必须同时向5台服务器发送5个请求 想法: Servlet中的多线程处理,就像普通Java应用程序中的多线程处理一样 每个服务器都有一个自己的Servlet(请求),因此1个主Servlet对5个聚集Servlet说“获取数据xy”,聚集Servlet将数据发送到主Servle

我有一个Servlet,它从客户机获取请求,然后Servlet通过http请求/响应从5个不同的服务器收集数据(每个服务器需要1秒才能响应),并将数据发送回客户机

问题是,当客户端必须等待6秒以等待响应时,时间太长。 因此,必须同时向5台服务器发送5个请求

想法:

  • Servlet中的多线程处理,就像普通Java应用程序中的多线程处理一样
  • 每个服务器都有一个自己的Servlet(请求),因此1个主Servlet对5个聚集Servlet说“获取数据xy”,聚集Servlet将数据发送到主Servlet,并将主Servlet发送回客户端
  • 我担心的问题是,一个线程/servlet从另一个请求获得响应,因为它的时间和ip相同

    如何解决这个问题?谢谢

    Servlet中的多线程

    您可以使用将此请求置于异步模式的方法,并使用原始(未包装的)ServletRequest和ServletResponse对象初始化其AsyncContext

    阅读更多有关详细解释的内容

    AsyncContext
    是Servlet 3.0规范中定义的异步处理HTTP请求的标准方法


    阅读有关创建线程池的更多信息,该线程池重用在共享无界队列上运行的固定数量的线程。在任何时候,最多N个线程将是活动的处理任务。如果在所有线程都处于活动状态时提交其他任务,它们将在队列中等待,直到有线程可用

    请看一看,阅读更多关于它的示例代码


    “我担心的问题是,一个线程/servlet从另一个请求获得响应,因为它是同一时间和同一ip。”——你能详细说明一下吗?你有一个小例子给我吗?例如,我在doGet方法中有:1。字符串a=method1();2.字符串b=method2();。我想处理1。二,。Async AG在同一时间找到它THX,但我没有得到它。在所有的例子中,一个长时间运行的任务被外包到一个新的线程中,并发送回客户机。但我有5个任务,我只想同时运行,在一个servlet中收集所有数据,处理并发送回客户机。