`
hvang1988
  • 浏览: 51256 次
  • 性别: 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多线程处理大数据,可根据配置的线程数,任务去调度处理

    多线程的处理

    描述提到了“多线程例子”,表明我们将探讨一个具体的实例,这个实例包含有详细的注释,帮助我们理解代码的运行机制。压缩包中的“Sample1”可能是一个可执行的编译文件,用于演示多线程的运用。 在Windows操作系统...

    libevent多线程处理

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

    Qt 之多线程处理多任务

    在Qt框架中,多线程处理多任务是提高应用程序性能和响应能力的重要手段。Qt提供了丰富的多线程支持,使得开发者能够充分利用现代计算机的多核处理器资源,避免UI线程因执行耗时操作而导致的界面假死问题。本文将深入...

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

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

    windows 多线程处理

    这使得程序可以在同一时间处理多个任务,提高了程序的并行性。 2. **多线程提高程序性能**:通过将任务分解到不同的线程中,可以利用多核CPU的能力,使得计算密集型任务和I/O密集型任务能同时进行,从而减少总体的...

    多线程分块处理图像

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

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

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

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

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

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

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

    C#多线程消息处理例子

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

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

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

    多线程导入excel 数据

    在Java编程中,多线程导入Excel数据是一项常见的任务,特别是在大数据处理和高并发场景下。这个场景通常涉及到性能优化和资源管理,以确保系统稳定性和数据一致性。下面将详细阐述多线程导入Excel数据的核心知识点。...

Global site tag (gtag.js) - Google Analytics