`
白浪滔天
  • 浏览: 89672 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

简单的基于ExecutorCompletionService的线程控制

    博客分类:
  • java
阅读更多

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聊天室

    综上所述,"基于多线程和SOCKET聊天室"项目展示了如何在C#环境下利用多线程和Socket技术实现一个简单的聊天室。它不仅涵盖了网络编程的核心概念,还涉及到UI设计和并发处理,对于学习和理解这些技术具有很高的实践...

    基于多线程的简单聊天工具之服务器

    Linux环境下基于多线程的简单聊天工具之服务器,亲测! 建议和客户端配套使用,可采用如下生成可执行方式: gcc -o chat_server chat_server.c

    基于多线程的端口扫描器

    基于多线程的端口扫描器,包含源代码以及分析

    VC基于多线程的同步聊天,与文件传输

    总之,"VC基于多线程的同步聊天,与文件传输"项目涵盖了网络编程、多线程并发控制、文件操作和同步技术等多个方面,这些都是现代软件开发中的重要技能。通过实现这样的应用,开发者可以提升对这些关键技术的理解和...

    windows 线程控制实例

    在Windows操作系统中,线程控制是一项关键的编程技术,它涉及到多任务并行处理和系统资源的高效利用。本文将详细讲解如何在Windows环境下使用线程控制,包括线程的创建、关闭、挂起、恢复以及临界区的使用。我们将以...

    易语言多线程控制:信号量控制线程数量

    以下是一个简单的示例,展示了如何在易语言中使用信号量控制线程数量: ```易语言 .信号量 = 创建信号量(5, 5) // 初始化一个信号量,初始值和最大值均为5,表示最多有5个线程并发执行 .线程池 = 创建数组(10, ....

    Java多线程示例之线程控制

    本示例主要探讨了如何通过两种方法来控制Java中的线程数量,以达到优化性能和防止内存不足的目的。 首先,我们来看自定义线程池方法实现线程数控制的例子。线程池(ThreadPool)是Java并发编程中非常重要的概念,它...

    基于多线程的网络爬虫设计与实现.pdf

    3. **并发控制与同步**:在多线程环境下,还需要特别注意并发控制与同步问题。例如,当多个线程同时访问同一个共享资源时,应采取适当的锁机制防止数据竞争,如使用互斥锁(mutex lock)。另外,对于线程间的通信,...

    Python基于多线程协程的文献下载器源码.zip

    线程池可以有效地管理和控制并发线程的数量,防止过多线程导致的资源浪费和系统不稳定。 2. **异步IO(Async IO)**:`asyncio`库的核心在于异步IO,它基于事件循环(Event Loop)和协程。通过定义`async def`函数...

    简单的基于多线程的进度条对话框程序

    本文将详细解析一个简单的基于多线程的进度条对话框程序,这是C++编程中的一个基础应用,非常适合初学者理解和实践。 首先,让我们了解“多线程”。在单线程环境中,程序按顺序执行任务,而在多线程环境中,可以...

    C#内存释放-线程控制-线程启动-线程暂停

    在C#编程中,线程控制和内存管理是两个至关重要的概念,特别是在处理并发和优化应用程序性能时。本文将深入探讨“C#内存释放-线程控制-线程启动-线程暂停”这一主题,结合提供的WFormsThread文件,我们可以假设这是...

    基于SpringBoot和POI实现单线程和多线程导出Excel.zip

    基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip...

    基于java多线程的一款小游戏.zip

    基于java多线程的一款小游戏基于java多线程的一款小游戏基于java多线程的一款小游戏 基于java多线程的一款小游戏基于java多线程的一款小游戏基于java多线程的一款小游戏 基于java多线程的一款小游戏基于java多线程的...

    C#多线程之线程控制详解

    以下是一个简单的线程控制实例,演示了线程的启动、停止、暂停和继续操作。 ```csharp private void btn_Start_Click(object sender, EventArgs e) { mThread.Start(); // 开始 } private void btn_Stop_Click...

    线程-3-线程控制ooo-

    Linux中的线程库封装关系和线程控制,包括线程创建、终止、等待等操作,都是基于对线程和进程地址空间布局的深刻理解之上。线程和进程的区别与联系,是理解线程控制不可或缺的一部分。线程的创建和终止涉及到进程...

    VC简单线程控制器

    "VC简单线程控制器"是一个专门为初学者设计的实例,旨在帮助理解如何在VC环境中使用线程。 线程的创建与使用: 在VC中,我们可以使用`CreateThread`函数或`_beginthread`/`_beginthreadex`函数来创建新线程。`...

    基于Java多线程与线程安全实践-基于Http协议的断点续传设计与实现.zip

    基于Java多线程与线程安全实践-基于Http协议的断点续传设计与实现.zip基于Java多线程与线程安全实践-基于Http协议的断点续传设计与实现.zip基于Java多线程与线程安全实践-基于Http协议的断点续传设计与实现.zip基于...

    C#线程控制

    在C#编程中,线程控制是一项至关重要的技能,尤其对于资源管理和高性能应用程序而言。线程使得程序可以同时执行多个任务,从而提高了系统的效率。本文将深入探讨C#中的线程控制,包括线程的基本概念、创建与管理线程...

    基于多线程技术的PCAN驱动UDS-Bootloader软件,实现文件存储报文信息功能,遵循UDS协议多年量产稳定运行 ,基于多线程技术的PCAN驱动与UDS协议驱动器的报文存储软件解决方案,VS

    基于多线程技术的PCAN驱动UDS_Bootloader软件,实现文件存储报文信息功能,遵循UDS协议多年量产稳定运行。,基于多线程技术的PCAN驱动与UDS协议驱动器的报文存储软件解决方案,VS PCAN驱动 UDS_Bootloader 带有文件...

Global site tag (gtag.js) - Google Analytics