使用HTTPUrlConnection的多线程HTTP请求的高CPU使用率

时间:2015-01-08 00:16:47

标签: java multithreading httpurlconnection

我正在使用名为Scribe的小型Java库执行多线程HTTP请求。 Scribe使用HTTPUrlConnection发出请求,并将结果InputStream读取到String。缓冲区大小为65kb,但响应大小通常为2MB,但我怀疑这是一个影响因素。

当每个HTTP请求运行10个线程时,我的CPU使用率在所有4个核心上最大化。从分析中我可以看到,大约60%的CPU用于调用HttpUrlConnection.getResponseCode();(可能等待响应),并且大约20%的时间用于调用StreamUtils中的InputStream.read()

在jVisualVM中,我可以看到线程是"正在运行"整个时间。我认为在执行I / O以释放CPU资源时,底层类将有一种阻塞线程的方法,但我想我的理解在这里有点不稳定。

执行并行HTTP请求的更有效方法是什么?

0 个答案:

没有答案
相关问题