我正在用Java编写一个简单的Web爬虫.我希望它能够每秒下载尽可能多的页面.是否有一个包使得Java中的异步HTTP Web请求变得容易?我使用了HttpURLConnection但是阻塞了.我也知道Apache的HTTPCore NIO中有一些东西,但我正在寻找更轻量级的东西.我尝试使用这个包,我在多个线程上使用HttpURLConnection获得了更好的吞吐量.
解决方法:
一般来说,只要线程数低于1000,数据密集型协议在原始吞吐量方面往往比NIO的经典阻塞I / O要好一些.至少在客户端基于HTTP的情况下就是如此(可能不完美且可能有偏见的Apache HttpClient使用的HTTP基准[1]
只要线程数量适中(<250),使用具有线程的阻塞HTTP客户端可能会好得多 如果您完全确定需要基于NIO的HTTP客户端,我可以推荐Jetty HTTP客户端,我个人认为这是目前最好的异步HTTP客户端. [1] http://wiki.apache.org/HttpComponents/HttpClient3vsHttpClient4vsHttpCore