我有一个Servlet,它从客户端获取一个请求,然后Servlet通过http请求/响应从5个不同的服务器收集数据(每个服务器都需要1秒来响应)并将数据发送回客户端。
问题是,当客户端必须等待6秒等待响应时,时间太长了。因此,对5台服务器的5次请求必须同时发送。
想法:
我担心的问题是,线程/servlet从另一个请求获得响应,因为它具有相同的时间和相同的ip。
如何解决这个问题?谢谢!
发布于 2014-07-25 08:47:42
Servlet中的多线程
您可以使用ServletRequest#startAsync()方法将此请求置于异步模式,并使用原始(未包装) ServletRequest和ServletResponse对象初始化其AsyncContext。
阅读更多关于Servlet 3 0最终-规范-第2.3.3.3节-异步处理的详细说明。
AsyncContext是Servlet3.0规范中定义的异步处理HTTP请求的标准方法。
了解有关创建线程池的Executors.newFixedThreadPool()的更多信息,该线程池重用在共享无界队列上操作的固定数量的线程。在任何时候,最多的nThreads线程都是活动的处理任务。如果在所有线程都处于活动状态时提交了其他任务,它们将在队列中等待,直到线程可用为止。
请看一下ExecutorService,阅读更多关于它的示例代码。
https://stackoverflow.com/questions/24951627
复制相似问题