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环境下使用线程控制,包括线程的创建、关闭、挂起、恢复以及临界区的使用。我们将以...
本示例基于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++编程中的一个基础应用,非常适合初学者理解和实践。 首先,让我们了解“多线程”。在单线程环境中,程序按顺序执行任务,而在多线程环境中,可以...
【简易的基于多线程聊天程序】 在编程领域,创建一个聊天程序是一项常见的练习,它可以帮助开发者理解网络通信和并发处理的基本概念。本项目“简易的基于多线程聊天程序”是一个初学者的作品,旨在利用多线程和MFC...
基于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基于...
在C#编程中,线程控制是一项至关重要的技能,尤其对于资源管理和高性能应用程序而言。线程使得程序可以同时执行多个任务,从而提高了系统的效率。本文将深入探讨C#中的线程控制,包括线程的基本概念、创建与管理线程...
本实例将探讨如何使用C#创建一个简单的线程,并通过委托来控制UI控件,确保在非UI线程中安全地更新界面。 标题中的“c#一个简单的线程实例 委托控制控件”表明我们将学习如何启动一个新的线程,并使用委托来与UI...
### 基于线程的并发控制技术研究与应用 #### 一、并发编程的复杂性及挑战 并发编程在现代软件开发中扮演着至关重要的角色,尤其在提高系统的并行处理能力和改善交互响应时间方面。然而,实现高效且健壮的并发控制...