Apache HttpClient Fluent API:在后台线程中异步执行多个请求
来源:互联网 发布:sqlserver 别名 编辑:程序博客网 时间:2024/05/30 20:08
完整代码:
package com.struts2.demo;import org.apache.http.client.fluent.Async;import org.apache.http.client.fluent.Content;import org.apache.http.client.fluent.Request;import org.apache.http.concurrent.FutureCallback;import java.util.LinkedList;import java.util.Queue;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;/** * 在后台线程中异步执行多个请求 * Created by Frank on 2014/6/6. */public class FluentAsync { public static void main(String[] args) { Request[] requests = new Request[]{ Request.Get("http://www.baidu.com/"), Request.Get("http://www.yahoo.com/"), Request.Get("http://www.apache.com/"), Request.Get("http://www.apple.com/") }; Queue<Future<Content>> queue = new LinkedList<>(); /** * 异步执行GET请求 */ ExecutorService es = Executors.newFixedThreadPool(4); Async async = Async.newInstance().use(es); for (final Request request : requests) { Future<Content> future = async.execute(request, new FutureCallback<Content>() { @Override public void completed(Content content) { System.out.println(System.currentTimeMillis() + " Request completed: " + request); } @Override public void failed(Exception e) { System.out.println(e.getMessage() + ": " + request); } @Override public void cancelled() { System.out.println("Request cancelled: " + request); } }); queue.add(future); } Future<Content> future; while ((future = queue.poll()) != null) { if (future.isDone()) { if (!future.isCancelled()) { try { future.get(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); future.cancel(true); } catch (ExecutionException e) { System.out.println(e.getMessage()); } } } else { queue.add(future); } } System.out.println("done"); es.shutdown(); }}
0 0
- Apache HttpClient Fluent API:在后台线程中异步执行多个请求
- 在后台线程中执行数据库查询
- Apache HttpComponents(HTTPClient) Fluent API 使用
- 在后台线程中使用同步模式的文件系统API
- 在后台线程中使用同步模式的文件系统API
- apache fluent api
- HttpClient Fluent API 的使用
- Ajax请求在后台已执行,但是前台显示404
- Java异步执行多个HTTP请求的例子(需要apache http类库)
- 集成FUSE的程序在后台运行后,创建的多个线程被自动杀死!
- Android中在后台线程/子线程更新Ui
- 让Linux终端中执行的程序在后台运行
- 让Linux终端中执行的程序在后台运行
- EBS在后台取消请求
- HttpClient 之Fluent API 简单使用
- 让命令在后台执行
- Ajax请求在后台已执行,但是返回前台404/403
- 双中心同步,httpclient,线程池异步请求
- 数据库的本质、概念及其应用实践(二)
- 设计模式----观察者模式
- 443端口 (HTTPS) && 计算机常用端口号一览功用详细说明
- PGA总结
- 03- struts2中s:select标签的使用
- Apache HttpClient Fluent API:在后台线程中异步执行多个请求
- Android应用内评价/跳转到应用市场功能
- 大数据时代-学生处理问题的应具备的能力的思考
- C++小知识:指针和引用的区别
- bool、int、float、指针变量与“零值”比较的if语句
- GB2312,GBK,GB18030详解
- C++学习笔记_one_day
- 大学期间竞赛生涯_吴尚奇
- C++/C#小知识:关于try_catch 详解