Java异步执行多个HTTP请求的例子(需要apache http类库)
直接上代码
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类库)相关推荐
- java异步执行任务
java异步执行可以使用线程,或者第三方消息中间件,如mq: 线程池的使用: package com.example.demo.ExecutorTest;import java.util.concur ...
- java异步执行--
通过创建线程方式实现: public static void main(String[] args) throws Exception{System.out.println(" <== ...
- Java异步执行方法
一.利用多线程 直接new线程 Thread t = new Thread(){@Overridepublic void run() {longTimeMethod();} }; 使用线程池 priv ...
- java异步线程池同时请求多个接口数据
java异步线程池同时请求多个接口数据 一.适合的使用场景 复杂的网页爬虫,如要同时请求多个不同网页的数据,并且需要执行不同的数据处理,这个是非常合适的,执行线程传递的参数到最后callback是会附 ...
- java 异步请求completablefuture
1.前置 我现在有这么个要求, 调用外部的一个接口, 需要调用5次, 并且拿到5次请求返回数据, 分析结果 JDK:1.8 2.实现代码 @RequestMapping(value = "/ ...
- java ee_使用Java EE的ManagedExecutorService异步执行事务
java ee 自Java EE 7规范发布以来已经过去了一年. 现在,Wildfly 8 Final已发布,现在是时候仔细看看这些新功能了. 自从Java EE时代开始以来就缺少的一件事是能够使用成 ...
- java与java ee_使用Java EE的ManagedExecutorService异步执行事务
java与java ee 自Java EE 7规范发布以来已经过去了一年. 现在,Wildfly 8 Final已发布,现在是时候仔细看看这些新功能了. 自Java EE诞生以来,缺少的一件事就是能够 ...
- 使用Java EE的ManagedExecutorService异步执行事务
自Java EE 7规范发布以来已经过去了一年. 现在,Wildfly 8 Final已发布,现在是时候仔细看看这些新功能了. 自从Java EE时代开始以来就缺少的一件事是能够使用成熟的Java E ...
- java 线程 交给spring_浅谈Java中spring 线程异步执行
多线程并发处理起来通常比较麻烦,如果你使用spring容器来管理业务bean,事情就好办了多了.spring封装了Java的多线程的实现,你只需要关注于并发事物的流程以及一些并发负载量等特性,具体来说 ...
最新文章
- 一个交换程序的通用版本
- linux下修复bash漏洞
- 微信小程序开发(一)
- delphi精品项目源码_项目是如何死掉的?太过真实!
- if condition 大于_小函数,大用处!巧用AND函数,避开IF函数嵌套
- c++中使用 hiredis/hiredis.h
- 【计算机视觉】计算机视觉、模式识别、机器学习常用牛人主页链接
- php什么是变量6,PHP变量是什么
- 史上最全的ECharts讲解与使用
- 深入探索PowerPivot客户端和服务器端架构
- java 加载类java_深入研究Java类加载机制
- mysql 字符串函数
- Python的文件读取操作
- Keras下使用多GPU训练模型
- printer: PJL
- 介绍一个产品的思维导图_原来产品经理都是这样用思维导图的!
- 【心理咨询师考试笔记】基础理论(六)——心理咨询概论
- 微信公众号消息text换行问题
- ES6语法总结(21)--Generator函数的异步应用
- 链接h5代码_H5到底是什么?看完你就明白了!
热门文章
- python2.7爬虫实例-Python2.7爬虫-爬取简书文章-入门
- c++强大还是python强大-Python 到底是强类型语言,还是弱类型语言?
- python入门教程共四本书籍-Python入门经典书籍有哪些?有这三本就够了
- python常用内置模块-Python常用内置模块之xml模块
- python爬虫赚钱的途径-如何用爬虫技术赚钱?
- python代码怎么运行-Python程序执行原理,python程序怎么运行的?
- python语言及其应用-Python语言及其应用.PDF
- monty python喜剧-看美剧学托福:最受美国人喜欢的100部美剧
- php和python区别-python与php比较
- python好学吗 老程序员-想自学程序员,朋友推荐了python,靠谱吗?