ExecutorCompletionService 整合了Executor和BlockingQueue的功能,可以用来完成基于多线程的监控。
示例:
ExecutorService executorService = Executors.newFixedThreadPool(10);
CompletionService<String> completionService =
new ExecutorCompletionService<String>(executorService);
List<String> resultList = new ArrayList<String>();
completionService.submit(new Task("QuerySMS",querySmsServiceImpl,request,param));
completionService.submit(new Task("QueryMMS",queryMmsServiceImpl,request,param));
completionService.submit(new Task("QueryVoice",queryVoiceServiceImpl,request,param));
//
for(int i=0;i<counter;i++){
Future<String> future = completionService.take();
resultList.add(future.get());
}
private class Task implements Callable<String> {
private Service service;
private String queryType;
private ParamBean param;
private HttpServletRequest request;
public IntegratedTask(String queryType, Service service,
HttpServletRequest request,ParamBean param){
...
}
@Override
public String call() throws Exception {
return service.execute(request, param);
}
}
resultList存储的即是response。completionService会自动等待所有接口完后成再返回结果。
另外,也可以设置future的超时参数,进行超时处理。
分享到:
相关推荐
有助于多线程的开发和理解,程序有注释便于理解,可以尝试以此为基础二次开发 学习开发属于自己的聊天室程序,学习多线程的基础。。。
Linux环境下基于多线程的简单聊天工具之服务器,亲测! 建议和客户端配套使用,可采用如下生成可执行方式: gcc -o chat_server chat_server.c
基于多线程和SOCKET聊天室,里面是一个例子,是基于C#的WINFORM开发的
基于多线程的端口扫描器,包含源代码以及分析
基于多线程的网络爬虫设计与实现.pdf基于多线程的网络爬虫设计与实现.pdf基于多线程的网络爬虫设计与实现.pdf基于多线程的网络爬虫设计与实现.pdf
基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip...
基于java多线程的一款小游戏基于java多线程的一款小游戏基于java多线程的一款小游戏 基于java多线程的一款小游戏基于java多线程的一款小游戏基于java多线程的一款小游戏 基于java多线程的一款小游戏基于java多线程的...
Python基于多线程协程的文献下载器源码.zip
基于多线程的端口扫描程序课程设计报告
使用C++语言编写的简单的基于多线程的进度条对话框程序,适合初次接触多线程的人学习使用。
基于Java多线程与线程安全实践-基于Http协议的断点续传设计与实现.zip基于Java多线程与线程安全实践-基于Http协议的断点续传设计与实现.zip基于Java多线程与线程安全实践-基于Http协议的断点续传设计与实现.zip基于...
这个是操作系统实训所做的一个简单的基于linux 下的生产者-消费者问题 和 文件的读写问题
基于多线程的web服务器基于多线程的web服务器基于多线程的web服务器基于多线程的web服务器基于多线程的web服务器基于多线程的web服务器
用到了多线程,实现客户端,和服务端,一对多的聊天。同时还实现了文件传输的功能,可以同时进行
C#多线程控制控件实例,带有详细代码,并有注释说明,简单易懂。
在WIN-TC下的基于线程的多任务系统实现
属原创! p1->( ( p2->(p4->p6, p5), p3->p5->p6 ) 线程同步
Java多线程两个例子,一个是自定义线程池方法实现多线程运行个数的控制,可以解决多线程内存不足的问题。另一个是利用线程通信,读写先关的典型实例
一个简单的线程控制程序实例,介绍了使用线程的方法,适合新手。