我正在使用Java
服务器,该服务器需要向另一台服务器发送多个HTTP get
请求并处理响应并将其打包。目前,我使用synchronous
方式执行此操作,如Java
:
for(Request request: requestList){
Response response = client.send(request);
}
这样可行,但如果requestList
的大小很大,则需要很长时间,因为它按顺序执行:发送请求,等待响应,然后再发送。
我想知道,有没有办法加快速度?我在想如果使用多个线程发送多个请求就可以了?或许不是,因为对于一定数量的请求,总响应时间是固定的。
任何想法或解释,为什么或为什么不起作用将会有所帮助。我正在使用Java
。
答案 0 :(得分:1)
如果您使用Java 8,则可以尝试使用lambdas进行并行流。
requestList.parallelStream().forEach(....);
但是当请求相互依赖时,使用它们并不是一个好主意。此外,如果您的应用程序被多个用户使用,我不知道您的服务器将如何处理这么多请求。
其他解决方案是使用线程。但是你应该限制每个循环(用户)的线程数(线程池)。当然,这取决于你拥有多少资源。