Java中的异步Web请求?

Kam*_*eld 3 java multithreading httpurlconnection web-scraping

我正在用Java编写一个简单的Web爬虫.我希望它能够每秒下载尽可能多的页面.是否有一个包使得Java中的异步HTTP Web请求变得容易?我使用了HttpURLConnection但是阻塞了.我也知道Apache的HTTPCore NIO中有一些东西,但我正在寻找更轻量级的东西.我尝试使用这个包,我在多个线程上使用HttpURLConnection获得了更好的吞吐量.

ok2*_*k2c 6

一般来说,只要线程数低于1000,数据密集型协议在原始吞吐量方面往往比NIO的经典阻塞I/O要好一些.至少在客户端HTTP基于的情况下就是如此(可能不完美且可能有偏见的Apache HttpClient使用的HTTP基准[1]

一个可以是更好使用阻断HTTP客户端有螺纹,只要线程的数量是中度(<250)

如果您完全确定需要基于NIO的HTTP客户端,我可以推荐Jetty HTTP客户端,我个人认为这是目前最好的异步HTTP客户端.

[1] http://wiki.apache.org/HttpComponents/HttpClient3vsHttpClient4vsHttpCore