`
白浪滔天
  • 浏览: 88667 次
  • 性别: 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环境下使用线程控制,包括线程的创建、关闭、挂起、恢复以及临界区的使用。我们将以...

    C++多线程控制例子

    本示例基于Visual Studio 2008,实现了《C++编程艺术》一书中关于多线程控制的实例。下面将详细讲解C++多线程的概念、实现方式以及在VS2008中的应用。 **1. C++多线程概念** 多线程是操作系统中的一种并发执行模型...

    Java多线程示例之线程控制

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

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

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

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

    线程池可以有效地管理和控制并发线程的数量,防止过多线程导致的资源浪费和系统不稳定。 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基于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...

    VC简单线程控制器

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

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

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

    C#线程控制

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

    c#一个简单的线程实例 委托控制控件

    本实例将探讨如何使用C#创建一个简单的线程,并通过委托来控制UI控件,确保在非UI线程中安全地更新界面。 标题中的“c#一个简单的线程实例 委托控制控件”表明我们将学习如何启动一个新的线程,并使用委托来与UI...

    基于线程的并发控制技术研究与应用

    ### 基于线程的并发控制技术研究与应用 #### 一、并发编程的复杂性及挑战 并发编程在现代软件开发中扮演着至关重要的角色,尤其在提高系统的并行处理能力和改善交互响应时间方面。然而,实现高效且健壮的并发控制...

Global site tag (gtag.js) - Google Analytics