我的应用程序的要求是在多线程环境中运行。我使用PoolingHttpClientConnectionManager
来维护每条路由20个连接池。
PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
cm.setMaxTotal(200);
cm.setDefaultMaxPerRoute(20);
我从此连接管理器获取HttpClient
并尝试通过多个步骤执行get请求。
ExecutorService executor = Executors.newFixedThreadPool(50);
for(int k =0; k <25; k++){
executor.execute(getData);
}
executor.shutdown();
getData
方法正在使用HttpGet
执行HttpClient
请求。
但问题是,一次只使用5-6个连接,而不是上面提到的20个连接。所以HttpClient
似乎阻止了连接调用。
有没有人遇到同样的问题或有更好的解决方案。