zoukankan      html  css  js  c++  java
  • HttpAsyncClient 做并发长连接的一个实例

    HttpAsyncClient 做并发长连接的一个实例
    import java.util.concurrent.CountDownLatch;
    
    import org.apache.http.HttpResponse;
    import org.apache.http.client.config.RequestConfig;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.concurrent.FutureCallback;
    import org.apache.http.impl.nio.client.CloseableHttpAsyncClient;
    import org.apache.http.impl.nio.client.HttpAsyncClients;
    
    public class AsyncClientHttpExchangeFutureCallback {
    
     public static void main(final String[] args) throws Exception {
     RequestConfig requestConfig = RequestConfig.custom()
    .setSocketTimeout(300000)
    .setConnectTimeout(300000).build();
     CloseableHttpAsyncClient httpclient = HttpAsyncClients.custom()
    .setDefaultRequestConfig(requestConfig).setMaxConnTotal(1000).setMaxConnPerRoute(1000)//此处为多并发设置
    .build();
     try {
    httpclient.start();
     HttpGet[] requests =new HttpGet[900];
     for (int i = 0; i < 900; i++) {
    
     requests[i] = new HttpGet("http://192.168.71.192:8100/sub?cname="+i);
    
    
    }
     final CountDownLatch latch = new CountDownLatch(requests.length+1);
     for (final HttpGet request: requests) {
     httpclient.execute(request, new FutureCallback<HttpResponse>() {
    
     public void completed(final HttpResponse response) {
    latch.countDown();
     System.out.println(request.getRequestLine() +"->"+ response.getStatusLine());
    }
    
     public void failed(final Exception ex) {
    latch.countDown();
     System.out.println(request.getRequestLine() +"->"+ ex);
    }
    
     public void cancelled() {
    latch.countDown();
     System.out.println(request.getRequestLine() +"cancelled");
    }
    
    });
    }
    latch.await();
     System.out.println("Shutting down");
     } finally {
    httpclient.close();
    }
    System.out.println("Done");
    }
    
    }
  • 相关阅读:
    uniApp 实现微信小程序和app视频播放flv格式视频监控
    uniapp 给子组件传值不及时显示
    uni-app 中$refs 在app中无法使用
    使用甘特图
    背景图片加蒙版,里面内容不受影响
    MyBatis 多对一操作
    在Maven项目中使用lombok
    MyBatis使用分页
    Log4j打印日志
    paramiko 下载文件
  • 原文地址:https://www.cnblogs.com/timssd/p/5068190.html
Copyright © 2011-2022 走看看