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的超时参数,进行超时处理。
分享到:
相关推荐
本压缩包“多线程基础与基于多线程的简单聊天室”提供了对多线程技术的实践理解和二次开发的基础。以下是关于这个主题的详细知识点: 1. **多线程的概念**:多线程是指在一个程序中同时执行多个不同的线程,每个...
综上所述,"基于多线程和SOCKET聊天室"项目展示了如何在C#环境下利用多线程和Socket技术实现一个简单的聊天室。它不仅涵盖了网络编程的核心概念,还涉及到UI设计和并发处理,对于学习和理解这些技术具有很高的实践...
Linux环境下基于多线程的简单聊天工具之服务器,亲测! 建议和客户端配套使用,可采用如下生成可执行方式: gcc -o chat_server chat_server.c
基于多线程的端口扫描器,包含源代码以及分析
总之,"VC基于多线程的同步聊天,与文件传输"项目涵盖了网络编程、多线程并发控制、文件操作和同步技术等多个方面,这些都是现代软件开发中的重要技能。通过实现这样的应用,开发者可以提升对这些关键技术的理解和...
在Windows操作系统中,线程控制是一项关键的编程技术,它涉及到多任务并行处理和系统资源的高效利用。本文将详细讲解如何在Windows环境下使用线程控制,包括线程的创建、关闭、挂起、恢复以及临界区的使用。我们将以...
以下是一个简单的示例,展示了如何在易语言中使用信号量控制线程数量: ```易语言 .信号量 = 创建信号量(5, 5) // 初始化一个信号量,初始值和最大值均为5,表示最多有5个线程并发执行 .线程池 = 创建数组(10, ....
本示例基于Visual Studio 2008,实现了《C++编程艺术》一书中关于多线程控制的实例。下面将详细讲解C++多线程的概念、实现方式以及在VS2008中的应用。 **1. C++多线程概念** 多线程是操作系统中的一种并发执行模型...
本示例主要探讨了如何通过两种方法来控制Java中的线程数量,以达到优化性能和防止内存不足的目的。 首先,我们来看自定义线程池方法实现线程数控制的例子。线程池(ThreadPool)是Java并发编程中非常重要的概念,它...
3. **并发控制与同步**:在多线程环境下,还需要特别注意并发控制与同步问题。例如,当多个线程同时访问同一个共享资源时,应采取适当的锁机制防止数据竞争,如使用互斥锁(mutex lock)。另外,对于线程间的通信,...
线程池可以有效地管理和控制并发线程的数量,防止过多线程导致的资源浪费和系统不稳定。 2. **异步IO(Async IO)**:`asyncio`库的核心在于异步IO,它基于事件循环(Event Loop)和协程。通过定义`async def`函数...
本文将详细解析一个简单的基于多线程的进度条对话框程序,这是C++编程中的一个基础应用,非常适合初学者理解和实践。 首先,让我们了解“多线程”。在单线程环境中,程序按顺序执行任务,而在多线程环境中,可以...
在C#编程中,线程控制和内存管理是两个至关重要的概念,特别是在处理并发和优化应用程序性能时。本文将深入探讨“C#内存释放-线程控制-线程启动-线程暂停”这一主题,结合提供的WFormsThread文件,我们可以假设这是...
【简易的基于多线程聊天程序】 在编程领域,创建一个聊天程序是一项常见的练习,它可以帮助开发者理解网络通信和并发处理的基本概念。本项目“简易的基于多线程聊天程序”是一个初学者的作品,旨在利用多线程和MFC...
《深入浅出Win32多线程程序设计之线程控制》是一本专注于Windows操作系统下多线程编程的教程,适合初学者和有一定基础的学习者。本书旨在通过深入讲解Win32 API,帮助读者理解并掌握如何在Windows环境中创建、管理和...
基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip...
基于java多线程的一款小游戏基于java多线程的一款小游戏基于java多线程的一款小游戏 基于java多线程的一款小游戏基于java多线程的一款小游戏基于java多线程的一款小游戏 基于java多线程的一款小游戏基于java多线程的...
以下是一个简单的线程控制实例,演示了线程的启动、停止、暂停和继续操作。 ```csharp private void btn_Start_Click(object sender, EventArgs e) { mThread.Start(); // 开始 } private void btn_Stop_Click...
"VC简单线程控制器"是一个专门为初学者设计的实例,旨在帮助理解如何在VC环境中使用线程。 线程的创建与使用: 在VC中,我们可以使用`CreateThread`函数或`_beginthread`/`_beginthreadex`函数来创建新线程。`...
基于Java多线程与线程安全实践-基于Http协议的断点续传设计与实现.zip基于Java多线程与线程安全实践-基于Http协议的断点续传设计与实现.zip基于Java多线程与线程安全实践-基于Http协议的断点续传设计与实现.zip基于...