• 使用PoolingHttpClientConnectionManager解决httpclient的多线程请求问题


    直接上代码

    1.主程序

    public class TestMain {
    
        public static void main(String[] args) throws NSQException, TimeoutException {
            ExecutorService pool = Executors.newCachedThreadPool();
            // http请求
            PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
            cm.setDefaultMaxPerRoute(800);// 设置每个路由基础的连接
            cm.setMaxTotal(1000);//设置最大连接数//cm.setMaxPerRoute(new HttpRoute(httpHost), maxRoute);// 设置目标主机的最大连接数
            CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm).build();
            for (int i = 0; i < 1000; i++) {
                TestRunnable tmp = new TestRunnable(httpClient);
                new Thread(tmp).start();
            }
            
        }
    }

    2.线程使用httpclient进行post请求,其中调用的post请求具体实现已经做了封装,可参考我之前的文章

    class TestRunnable implements Runnable {
        private final CloseableHttpClient httpclient;
    
        public TestRunnable(CloseableHttpClient httpClient) {
            this.httpclient = httpClient;
        }
    
        @Override
        public void run() {
            String id = "444";
            String name = "testName";
            Map<String, String> param = new HashMap<String, String>();
            param.put("id", id);
            param.put("name", name);
    
            String result = HttpClientUtil.doHttpPost("http://ip:port/testapi", param,httpclient);
            System.out.println(result);
        }
        
    }
  • 相关阅读:
    iOS8中用UIVisualEffectView实现高斯模糊视图(毛玻璃效果)
    IOS推荐学习网站
    Xcode因为证书问题经常报的那些错
    bug集合令
    html5的标签
    CSS小总结
    JS中的闭包
    前端之路宣告式
    linux安装mysql数据库
    yarn环境搭建
  • 原文地址:https://www.cnblogs.com/JoeyWong/p/9056346.html
Copyright © 2020-2023  润新知