直接上代码
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); } }