Java 如何加快处理多个HTTP请求

Java 如何加快处理多个HTTP请求,java,multithreading,http,Java,Multithreading,Http,我正在一个Java服务器上工作,该服务器需要向另一个服务器发送多个httpget请求,并处理响应并将其打包。目前我正在使用synchronous方法来实现这一点,就像在Java中一样: for(Request request: requestList){ Response response = client.send(request); } 这是可行的,但是如果requestList的大小很大,则需要很长时间,因为它是按顺序执行的:发送请求,等待响应,然后发送下一个 我在想,有没有办法

我正在一个
Java
服务器上工作,该服务器需要向另一个服务器发送多个
httpget
请求,并处理响应并将其打包。目前我正在使用
synchronous
方法来实现这一点,就像在
Java
中一样:

for(Request request: requestList){
    Response response = client.send(request);
}
这是可行的,但是如果
requestList
的大小很大,则需要很长时间,因为它是按顺序执行的:发送请求,等待响应,然后发送下一个

我在想,有没有办法加快速度?我在想,如果使用多线程发送多个请求就可以了?或者可能不是,因为对于一定数量的请求,总响应时间是固定的


任何想法或解释,为什么或为什么不这样做将是有益的。我使用的是
Java

如果您使用的是java8,您可以尝试使用lambdas实现并行流

requestList.parallelStream().forEach(....);
但是,当请求相互依赖时,使用它们不是一个好主意。另外,如果您的应用程序被多个用户使用,我不知道您的服务器将如何处理这么多请求


其他解决方案是使用线程。但是您应该限制每个循环(用户)的线程数(线程池)。当然,这取决于您有多少资源。

多个线程就可以了。我以前做过,效果不错。然而,就像4个多重请求一样,不止这些,我真的不知道…在for循环中有多少项?有什么解释吗?假设我发送了2个请求,一个请求的响应时间是10秒。那么无论我使用什么策略,总是需要20秒才能得到2个响应,对吗?可能大小是50。不一定,这取决于你的程序等待响应的时间。假设设置和发送请求需要2秒,另一台服务器需要6秒来处理和响应,而您的服务器需要2秒来读取响应。按顺序,这是2+6+2+2+6+2=20秒,但对于这两个6秒的间隔,您的服务器只是坐在那里。它可能需要一些时间来设置和发送额外的请求,因此在这个简单的示例中,并行完成这两个请求可能需要12秒。多线程也可以使用多核。@blm不确定为什么您的示例的答案是12秒。但总而言之,假设一个50个requestList的大小,需要10秒,如果我使用parallel,我会看到明显的时间减少吗?