`
hvang1988
  • 浏览: 51559 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

ExecutorCompletionService多线程处理(线程有返回结果)

    博客分类:
  • java
阅读更多
好消息,百度网盘专业搜索网站上线了
打开瞧一瞧:http://bitar.cn
package com.thread;

import java.util.concurrent.Callable;
import java.util.concurrent.CompletionService;
import java.util.concurrent.ExecutorCompletionService;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * 多线程执行有返回值的处理
 * @author Administrator
 *
 */
public class ThreadResultExecutor {
	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		ExecutorService exec=Executors.newFixedThreadPool(50);
		CompletionService<String> serv = new ExecutorCompletionService<String>(exec);
		//模拟,一个对象tt,在多个线程中使用,是否会影响相互的值
			for (int i = 0; i < 50; i++) {
				serv.submit(new runTest<String>("aa"+i));
			}
			for (int i = 0; i < 50; i++) {
				serv.submit(new runTest<String>("bb"+i));
			}
			System.out.println("start");
//			for (int i = 0; i < 50; i++) {
//				try {
//					//serv.take();
//					System.out.println(serv.take().get());
//					//System.out.println(serv.take().get());
//				} catch (Exception e) {
//					e.printStackTrace();
//				}
//			}
	        exec.shutdown();//此方法等待处理完毕后再释放
			//System.exit(0);
	        
	}

}
class runTest<String> implements Callable<String>{
	private String tt;
	
	@Override
	public String call() throws Exception {
		Thread.currentThread().sleep(2000);
		System.out.println( tt+"="+Thread.currentThread().getId());
		return (String) (tt+"="+Thread.currentThread().getId());
	}
	public runTest(String tt){
		this.tt=tt;
		//ttt.set(tt);
	}
}

分享到:
评论

相关推荐

    通过多线程任务处理大批量耗时业务并返回结果

    标题中的"通过多线程任务处理大批量耗时业务并返回结果"指的是在Java或其他支持多线程的编程语言中,如何有效地分配工作到多个线程,以便同时处理大量任务,并在任务完成后收集和处理结果。 描述中提到的"当监测到...

    多线程并行执行,汇总结果

    在IT行业中,多线程并行执行是一种常见的优化策略,特别是在处理大数据量或者需要高性能计算的任务时。"CountDownLatch" 和 "Thread" 是Java编程语言中实现多线程并行执行的关键工具,它们有助于提高程序的运行效率...

    java多线程处理数据库数据

    然后,我们将数据库操作封装为`Callable`任务,因为`Callable`可以返回结果,适合于数据库操作这种有返回值的操作。 ```java public class DatabaseTask implements Callable&lt;Void&gt; { private Connection ...

    winform 多线程处理数据

    为了解决这个问题,我们可以利用C#中的多线程技术来实现后台处理数据,从而保持UI的响应性。本篇将详细讨论如何在WinForm应用中运用多线程处理数据以及异步更新UI。 1. **什么是多线程?** 在计算机科学中,多线程...

    分批取数 多线程数据处理

    分批取数 多线程数据处理

    多线程以JDBC的方式返回海量数据

    总结起来,通过多线程和JDBC的结合,我们可以高效地处理和返回海量数据,避免内存压力和单线程的性能瓶颈。这种技术适用于大数据分析、后台服务或其他需要大量读取数据库的应用场景。在实际操作中,应根据具体的业务...

    java多线程处理大数据

    java多线程处理大数据,可根据配置的线程数,任务去调度处理

    多线程处理数据(工具)样例

    在IT领域,多线程和并发处理是优化程序性能的关键技术。这个名为“多线程处理数据(工具)样例”的项目,显然旨在利用多线程的优势来加速数据流的处理。下面将详细探讨相关知识点。 多线程是操作系统提供的一种机制...

    libevent多线程处理

    本文将深入探讨如何在多线程环境中使用Libevent进行事件处理,并分享一个基于Libevent的多线程实现案例。 首先,理解Libevent的核心机制至关重要。Libevent提供了一个事件基础结构,它能够将来自不同来源的事件(如...

    java多线程实现大批量数据导入源码

    在Java编程中,多线程技术是处理大数据批量导入或导出的重要手段。它能有效提升程序执行效率,尤其在数据库操作这样的I/O密集型任务中。本项目以"java多线程实现大批量数据导入源码"为题,旨在通过多线程策略将大量...

    多线程分块处理图像

    在IT领域,尤其是在计算机视觉和图像处理中,多线程技术常常被用来优化性能,特别是在处理高分辨率图像时。本文将深入探讨“多线程分块处理图像”这一主题,结合OpenCV库来阐述如何利用多线程技术提高图像处理效率。...

    Revit二次开发 c# 多线程处理

    这个类将包含我们的多线程任务,并且有一个方法(如`Execute`)用于执行实际的工作。例如: ```csharp public class MyExternalEvent : IExternalEvent { public void Execute(UIApplication app) { // 在...

    多线程处理大数据叠加的问题

    在多线程处理大数据的上下文中,叠加问题指的是如何高效地将多个线程中的计算结果合并成最终结果。本文将通过Java编程语言的示例代码,探讨如何实现多线程相加的场景,并分析多线程在大数据处理中的优势及潜在问题。...

    多线程并发处理的简单实现

    在编程领域,多线程并发处理是一种常见的优化技术,它能充分利用多核处理器的资源,提高程序的执行效率。在给定的标题“多线程并发处理的简单实现”中,我们可以深入探讨如何构建这样的系统。 首先,多线程并发处理...

    qt-opencv-multithreaded-1.21Qt结合OpenCV多线程图像处理

    模拟了一个16个摄像机的场景,有不开多线程和打开多线程的对比。 可以明显感觉到打开多线程后主界面不卡了。 只是个多线程的小例子,还有很多不足之处,有待各位完善。 注意:pro文件中的include和lib文件目录需要...

    可并行递归算法的递归多线程实现

    在并行处理中,多线程能够充分利用现代多核处理器的能力,通过同时执行多个线程来加速计算过程。本文旨在探讨如何在递归算法中运用多线程技术,以实现高效的并行计算。 #### Java多线程框架与递归算法结合 Java...

    java并发(二十四)多线程结果组装

    本篇将探讨“多线程结果组装”的主题,它涉及到如何在多个并发执行的任务完成后,有效地收集并整合这些任务的结果。这个过程通常出现在分布式计算、数据处理或者并行计算的上下文中。 在Java中,我们可以通过`...

    C#处理大容量数据,及多线程简单应用

    以下将详细介绍“C#处理大容量数据,及多线程简单应用”这一主题。 首先,当我们面临大量数据时,一个关键的考虑点是避免阻塞主线程,尤其是对于UI(用户界面)应用。在C#中,长时间运行的任务会阻塞UI线程,导致...

    C#多线程消息处理例子

    总结来说,这个C#多线程消息处理例子展示了如何在后台线程中执行任务并安全地将结果传递给UI线程。它涉及到的关键技术包括线程创建、消息队列、事件与委托、以及线程安全的UI更新。理解并掌握这些概念对于编写高性能...

    一个基于C#开发的多线程处理程序源代码

    这个基于C#开发的多线程处理程序源代码,是利用Visual Studio 2005 (VS2005) 开发环境构建的,旨在演示如何有效地利用多线程进行后台运算和同步处理。 首先,我们要理解什么是多线程。在单核CPU系统中,多线程可以...

Global site tag (gtag.js) - Google Analytics