如何在java中比getResponseCode更快地获取http响应代码?

如何在java中比getResponseCode更快地获取http响应代码?,java,http-headers,http-status-codes,Java,Http Headers,Http Status Codes,我想获得超过10000000个网站的http响应代码。所以,我在java中使用了Http(s)?URLConnection类 代码是 HttpURLConnection http = (HttpURLConnection)address.openConnection(); http.setReadTimeout(300000); return http.getResponseCode(); 但我认为这是非常缓慢的。当我计算总时间时,它超过了10天 您知道用Java获取HTTP响应代码的更快的函

我想获得超过10000000个网站的http响应代码。所以,我在java中使用了Http(s)?URLConnection类

代码是

HttpURLConnection http = (HttpURLConnection)address.openConnection();
http.setReadTimeout(300000);
return http.getResponseCode();
但我认为这是非常缓慢的。当我计算总时间时,它超过了10天

您知道用Java获取HTTP响应代码的更快的函数或其他方法吗

  • 使用多线程;1000个线程的池将使您的运行时间减少1000倍

  • 使用非阻塞I/O。运行1000个并发连接将使总时间减少1000倍

  • 使用多线程;1000个线程的池将使您的运行时间减少1000倍

  • 使用非阻塞I/O。运行1000个并发连接将使总时间减少1000倍


  • 事实上,为了获得1000万个响应代码,您必须发送1000万个请求,这将需要很长时间才能返回。至少要10天,我并不感到惊讶;“我想它会比那个长得多。”安侬:也许他在写一个网络爬虫。我不知道我为什么这么做。“我的老板给我下的命令。”@Mastojun:你没有兴趣问为什么?你(大概)是一个聪明的人,而不是一个自动编写代码的人。确定这是要解决什么问题,并考虑其他解决方法。事实上,为了获得1000万个响应代码,您必须发送1000万个请求,这将需要很长时间才能返回。至少要10天,我并不感到惊讶;“我想它会比那个长得多。”安侬:也许他在写一个网络爬虫。我不知道我为什么这么做。“我的老板给我下的命令。”@Mastojun:你没有兴趣问为什么?你(大概)是一个聪明的人,而不是一个自动编写代码的人。确定这是要解决什么问题,并考虑解决它的其他方法。为什么1000个线程池只会将运行时间减少100倍?我还建议阅读网络爬虫。除了纯粹的性能之外,还有很多其他的考虑因素。例如,向网站发送大量请求可能会阻止您的IP地址,因此爬虫程序必须结合smarts,以避免向同一主机发出太多请求。除此之外,问题只是将问题分解成更小的批,并在多个线程上并行运行这些批,正如这个答案所建议的,并最终在多台机器上运行。然后启动HEAD请求而不是GET请求。您需要使用HTTP响应主体,否则HTTP连接将无法立即重用。头部请求不包括身体。总时间会减少更多。为什么1000个线程的池只会减少100倍的运行时间?我还建议阅读网络爬虫。除了纯粹的性能之外,还有很多其他的考虑因素。例如,向网站发送大量请求可能会阻止您的IP地址,因此爬虫程序必须结合smarts,以避免向同一主机发出太多请求。除此之外,问题只是将问题分解成更小的批,并在多个线程上并行运行这些批,正如这个答案所建议的,并最终在多台机器上运行。然后启动HEAD请求而不是GET请求。您需要使用HTTP响应主体,否则HTTP连接将无法立即重用。头部请求不包括身体。总时间将下降更多。