HttpAsyncClient 的简单使用
下载地址:http://hc.apache.org/downloads.cgi
在NetBeans中导入以下jar文件:
1:一次请求:
public static void oneReuest(){
final CloseableHttpAsyncClient httpClient = HttpAsyncClients.createDefault();
httpClient.start();
final HttpGet request = new HttpGet("http://www.apache.org/");
final Future future = httpClient.execute(request, null);
try {
HttpResponse response = (HttpResponse) future.get();
System.out.println("Response:" + response.getStatusLine());
System.out.println("Shutting down");
} catch (Exception ex) {
Logger.getLogger(Httpasyncclient.class.getName()).log(Level.SEVERE, null, ex);
}finally{
try {
httpClient.close();
} catch (IOException ex) {
Logger.getLogger(Httpasyncclient.class.getName()).log(Level.SEVERE, null, ex);
}
} System.out.println("执行完毕");
}
2:多次异步请求:
public static void moreRequest(){
final RequestConfig requestConfitg = RequestConfig.custom()
.setSocketTimeout(3000)
.setConnectTimeout(3000).build(); final CloseableHttpAsyncClient httpClient = HttpAsyncClients.custom()
.setDefaultRequestConfig(requestConfitg)
.build(); httpClient.start(); final HttpGet[] requests = new HttpGet[]{
new HttpGet("http://www.apache.org/"),
new HttpGet("http://www.baidu.com/"),
new HttpGet("http://www.oschina.net/")
}; final CountDownLatch latch = new CountDownLatch(requests.length);
for(final HttpGet request: requests){ httpClient.execute(request, new FutureCallback(){
@Override
public void completed(Object obj) {
final HttpResponse response = (HttpResponse)obj;
latch.countDown();
System.out.println(request.getRequestLine() + "->" + response.getStatusLine());
} @Override
public void failed(Exception excptn) {
latch.countDown();
System.out.println(request.getRequestLine() + "->" + excptn);
} @Override
public void cancelled() {
latch.countDown();
System.out.println(request.getRequestLine() + "cancelled");
}
});
} try {
latch.await();
System.out.println("Shutting Down");
} catch (InterruptedException ex) {
Logger.getLogger(Httpasyncclient.class.getName()).log(Level.SEVERE, null, ex);
}finally{
try {
httpClient.close();
} catch (IOException ex) {
Logger.getLogger(Httpasyncclient.class.getName()).log(Level.SEVERE, null, ex);
}
}
System.out.println("Finish!");
}
运行结果:
run:
GET http://www.baidu.com/ HTTP/1.1->HTTP/1.1 OK
GET http://www.oschina.net/ HTTP/1.1->HTTP/1.1 OK
GET http://www.apache.org/ HTTP/1.1->HTTP/1.1 OK
Shutting Down
Finish!
成功构建 (总时间: 秒) 可以看出是异步执行的!不是按照我们传入的URL参数顺序执行的!
HttpAsyncClient 的简单使用的更多相关文章
- 异步httpclient(httpasyncclient)的使用与总结
参考:异步httpclient(httpasyncclient)的使用与总结 1. 前言应用层的网络模型有同步与异步.同步意味当前线程是阻塞的,只有本次请求完成后才能进行下一次请求;异步意味着所有的请 ...
- 用IntelliJ IDEA创建Gradle项目简单入门
Gradle和Maven一样,是Java用得最多的构建工具之一,在Maven之前,解决jar包引用的问题真是令人抓狂,有了Maven后日子就好过起来了,而现在又有了Gradle,Maven有的功能它都 ...
- 使用异步HTTP提升客户端性能(HttpAsyncClient)
使用异步HTTP提升客户端性能(HttpAsyncClient) 大家都知道,应用层的网络模型有同步.异步之分. 同步,意为着线程阻塞,只有等本次请求全部都完成了,才能进行下一次请求. 异步,好处是不 ...
- Gradle项目学习 & HttpAsyncClient学习 & CountDownLatch学习
装了Intellij,就是装了Gradle. 新建一个Gradle项目.然后下面这个页面要勾选上面两项: Use auto-import和Create directories for empty co ...
- 【造轮子】打造一个简单的万能Excel读写工具
大家工作或者平时是不是经常遇到要读写一些简单格式的Excel? shit!~很蛋疼,因为之前吹牛,就搞了个这东西,还算是挺实用,和大家分享下. 厌烦了每次搞简单类型的Excel读写?不怕~来,喜欢流式 ...
- Fabio 安装和简单使用
Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
- 哪种缓存效果高?开源一个简单的缓存组件j2cache
背景 现在的web系统已经越来越多的应用缓存技术,而且缓存技术确实是能实足的增强系统性能的.我在项目中也开始接触一些缓存的需求. 开始简单的就用jvm(java托管内存)来做缓存,这样对于单个应用服务 ...
- 在Openfire上弄一个简单的推送系统
推送系统 说是推送系统有点大,其实就是一个消息广播功能吧.作用其实也就是由服务端接收到消息然后推送到订阅的客户端. 思路 对于推送最关键的是服务端向客户端发送数据,客户端向服务端订阅自己想要的消息.这 ...
随机推荐
- 自制单片机之九……写给对制做并口ISP下载线有疑惑的朋友
一.器件的选用 制做并口ISP下载在网上有很多的电路和对应的PC端下载软件.很多人疑惑,不知该用哪张图,用哪个下载软件.我看了一下,采用的器件主要是74HC373.74HC541和74HC244.其实 ...
- [转]Ubuntu Tweak 0.8.7 发布:支持 Ubuntu 14.04
原文网址:http://www.oschina.net/news/51054/ubuntu-tweak-0-8-7 这是我开发 Ubuntu Tweak 七年以来第一次没在 Ubuntu 正式发布之前 ...
- Android实现摇晃手机的监听
摘自:http://blog.csdn.net/xwren362922604/article/details/8515343 监听摇晃手机的类: /** * @author renxinwei ...
- hdu5072(鞍山regional problem C):容斥,同色三角形模型
现场过的第四多的题..当时没什么想法,回来学了下容斥,又听学长讲了一讲,终于把它过了 题目大意:给定n个数,求全部互质或者全部不互质的三元组的个数 先说一下同色三角形模型 n个点 每两个点连一条边(可 ...
- 【剑指offer】面试题38:数字在排序数组中出现的次数
题目: 统计一个数字在排序数组中出现的次数. 思路: 对二分查找进行改进,找到数字在数组中第一次出现和最后一次出现的位置,这样就得到它出现的次数. 以找第一次出现的位置为例:如果mid元素大于k,则在 ...
- vagrant拷贝后vagrant file需要加的配置
config.ssh.forward_agent config.ssh.username = "vagrant" config.ssh.password = "vagra ...
- 总结下java经常犯的错误
编写代码是一种艺术,认识错误是我们代码改进的重要途径之一.以下情况并非大家都能碰到过,但希望提高代码质量的人都引以为戒.以下各种情况,都是初学者经常犯的错误. 1.1 字符串没有判断是否为 ...
- Map.EntrySet的使用方法
1.package edu.smc.test; 2. 3.import java.util.HashMap; 4.import java.util.Iterator; 5.import java.ut ...
- 数学之路(3)-机器学习(3)-机器学习算法-PCA
PCA 主成分分析(Principal components analysis,PCA),维基百科给出一个较容易理解的定义:“PCA是一个正交化线性变换,把数据变换到一个新的坐标系统中,使得这一数据的 ...
- [Regular Expressions] Introduction
var str = "Is this This?"; //var regex = new RegExp("is", "gi"); var r ...