直接上代码

package org.jivesoftware.spark.util;import java.io.IOException;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;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;
import org.jivesoftware.DebugPrint;
import org.jivesoftware.spark.SparkManager;//异步埋点数据采集工具类
public class HotClickAsync {static ExecutorService service = Executors.newSingleThreadExecutor(); //单一线程// 调用http请求。不阻塞主线程public static void SendRequest(final String event)throws InterruptedException, IOException {Runnable run = new Runnable() {@Overridepublic void run() {try {SendRequestAsync(event,SparkManager.getSessionManager().getUsername());} catch (InterruptedException e) {// TODO Auto-generated catch block
                    e.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch block
                    e.printStackTrace();}}};service.execute(run);}// 阻塞HTTP调用private static void SendRequestAsync(String event,String username)throws InterruptedException, IOException {RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(1000) // http超时.setConnectTimeout(1000).build(); // 连接超时CloseableHttpAsyncClient httpclient = HttpAsyncClients.custom().setDefaultRequestConfig(requestConfig).build();try {httpclient.start();final HttpGet[] requests = new HttpGet[] { new HttpGet("http://XXXXXX.cn:81/HotClick.aspx?event="+ event +"&username="+username) // 第一个采集地址// , new HttpGet("http://mta.qq.com")//第二个采集地址, http://mta.qq.com/
            };// 同步计数final CountDownLatch latch = new CountDownLatch(requests.length);for (final HttpGet request : requests) {httpclient.execute(request, new FutureCallback<HttpResponse>() {@Overridepublic void completed(final HttpResponse response) {latch.countDown();DebugPrint.outStirng(request.getRequestLine() + "####->"+ response.getStatusLine());}@Overridepublic void failed(final Exception ex) {latch.countDown();DebugPrint.outStirng(request.getRequestLine() + "####->" + ex);}@Overridepublic void cancelled() {latch.countDown();//DebugPrint.outStirng(request.getRequestLine()//        + " cancelled");
                    }});}latch.await();} finally {httpclient.close();}DebugPrint.outStirng(" ###  HotClickAsync Done ###");}}

转载于:https://www.cnblogs.com/starcrm/p/5216303.html

Java异步执行多个HTTP请求的例子(需要apache http类库)相关推荐

  1. java异步执行任务

    java异步执行可以使用线程,或者第三方消息中间件,如mq: 线程池的使用: package com.example.demo.ExecutorTest;import java.util.concur ...

  2. java异步执行--

    通过创建线程方式实现: public static void main(String[] args) throws Exception{System.out.println(" <== ...

  3. Java异步执行方法

    一.利用多线程 直接new线程 Thread t = new Thread(){@Overridepublic void run() {longTimeMethod();} }; 使用线程池 priv ...

  4. java异步线程池同时请求多个接口数据

    java异步线程池同时请求多个接口数据 一.适合的使用场景 复杂的网页爬虫,如要同时请求多个不同网页的数据,并且需要执行不同的数据处理,这个是非常合适的,执行线程传递的参数到最后callback是会附 ...

  5. java 异步请求completablefuture

    1.前置 我现在有这么个要求, 调用外部的一个接口, 需要调用5次, 并且拿到5次请求返回数据, 分析结果 JDK:1.8 2.实现代码 @RequestMapping(value = "/ ...

  6. java ee_使用Java EE的ManagedExecutorService异步执行事务

    java ee 自Java EE 7规范发布以来已经过去了一年. 现在,Wildfly 8 Final已发布,现在是时候仔细看看这些新功能了. 自从Java EE时代开始以来就缺少的一件事是能够使用成 ...

  7. java与java ee_使用Java EE的ManagedExecutorService异步执行事务

    java与java ee 自Java EE 7规范发布以来已经过去了一年. 现在,Wildfly 8 Final已发布,现在是时候仔细看看这些新功能了. 自Java EE诞生以来,缺少的一件事就是能够 ...

  8. 使用Java EE的ManagedExecutorService异步执行事务

    自Java EE 7规范发布以来已经过去了一年. 现在,Wildfly 8 Final已发布,现在是时候仔细看看这些新功能了. 自从Java EE时代开始以来就缺少的一件事是能够使用成熟的Java E ...

  9. java 线程 交给spring_浅谈Java中spring 线程异步执行

    多线程并发处理起来通常比较麻烦,如果你使用spring容器来管理业务bean,事情就好办了多了.spring封装了Java的多线程的实现,你只需要关注于并发事物的流程以及一些并发负载量等特性,具体来说 ...

最新文章

  1. 一个交换程序的通用版本
  2. linux下修复bash漏洞
  3. 微信小程序开发(一)
  4. delphi精品项目源码_项目是如何死掉的?太过真实!
  5. if condition 大于_小函数,大用处!巧用AND函数,避开IF函数嵌套
  6. c++中使用 hiredis/hiredis.h
  7. 【计算机视觉】计算机视觉、模式识别、机器学习常用牛人主页链接
  8. php什么是变量6,PHP变量是什么
  9. 史上最全的ECharts讲解与使用
  10. 深入探索PowerPivot客户端和服务器端架构
  11. java 加载类java_深入研究Java类加载机制
  12. mysql 字符串函数
  13. Python的文件读取操作
  14. Keras下使用多GPU训练模型
  15. printer: PJL
  16. 介绍一个产品的思维导图_原来产品经理都是这样用思维导图的!
  17. 【心理咨询师考试笔记】基础理论(六)——心理咨询概论
  18. 微信公众号消息text换行问题
  19. ES6语法总结(21)--Generator函数的异步应用
  20. 链接h5代码_H5到底是什么?看完你就明白了!

热门文章

  1. python2.7爬虫实例-Python2.7爬虫-爬取简书文章-入门
  2. c++强大还是python强大-Python 到底是强类型语言,还是弱类型语言?
  3. python入门教程共四本书籍-Python入门经典书籍有哪些?有这三本就够了
  4. python常用内置模块-Python常用内置模块之xml模块
  5. python爬虫赚钱的途径-如何用爬虫技术赚钱?
  6. python代码怎么运行-Python程序执行原理,python程序怎么运行的?
  7. python语言及其应用-Python语言及其应用.PDF
  8. monty python喜剧-看美剧学托福:最受美国人喜欢的100部美剧
  9. php和python区别-python与php比较
  10. python好学吗 老程序员-想自学程序员,朋友推荐了python,靠谱吗?