我正在尝试使用Apache HttpComponents library
下载许多文件。
使用相同的HttpClient单独下载文件。
但我只得到第一个。当我使用调试器时,程序在此指令上保持阻止
HttpResponse response = httpClient.execute(httpGet);
我使用ExecutorService在单独的线程上下载文件:
ExecutorService pool = Executors.newSingleThreadExecutor(); pool.submit(new FileDownloader(httpClient,URL1)); pool.submit(new FileDownloader(httpClient,URL2)); pool.shutdown(); pool.awaitTermination(Long.MAX_VALUE, TimeUnit.MILLISECONDS);
编辑
当我使用单独的httpClient时,它可以正常工作。
有什么想法吗?
答案 0 :(得分:0)
您提供的信息相当稀少。我猜你正在使用Apache HttpComponents library。在这种情况下,当使用来自多个线程的HttpClient
时,您将需要使用线程安全的连接池管理器。
例如:PoolingHttpClientConnectionManager
有关示例,请参阅this tutorial。
答案 1 :(得分:0)
由于我公司的代理,这是一个问题。它不允许同时超过2个开放连接。 因此,为避免此问题,请不要忘记在每次请求后关闭HttpResponse。