Java Httpclient需要很长时间
我正在尝试使用ApacheHttpComponents库下载许多文件 使用相同的HttpClient单独下载文件 但我只得到第一个。当我使用调试器时,程序在该指令上保持阻塞状态Java Httpclient需要很长时间,java,httpclient,Java,Httpclient,我正在尝试使用ApacheHttpComponents库下载许多文件 使用相同的HttpClient单独下载文件 但我只得到第一个。当我使用调试器时,程序在该指令上保持阻塞状态 HttpResponse response = httpClient.execute(httpGet); 我正在使用ExecutorService在不同的线程上加载文件: 编辑 当我使用一个单独的httpClient时,它就工作了 有什么想法吗 你提供的信息相当稀少。我猜你在用这个。在这种情况下,当从多个线程使用Htt
HttpResponse response = httpClient.execute(httpGet);
我正在使用ExecutorService在不同的线程上加载文件:
编辑
当我使用一个单独的httpClient时,它就工作了
有什么想法吗 你提供的信息相当稀少。我猜你在用这个。在这种情况下,当从多个线程使用
HttpClient
时,需要使用线程安全的连接池管理器
例如:poollighttpclientconnectionmanager
请参阅以获取示例。这是由于我公司的代理造成的问题。它不允许同时打开超过2个连接。
因此,为了避免这个问题,请不要忘记在每次请求后关闭HttpResponse。粘贴更多代码,以及GETFirst guess的url,因为数据太少:阻止I/O。可能需要为每个请求创建一个线程。是的,我使用的是Apache HttpComponents库。我不认为这是线程的问题,因为我使用SingleThreadExecutor来运行我的线程。我将编辑我的帖子,以提供更多信息。我试图在同一线程和同一问题中下载所有文件。
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);