`
hvang1988
  • 浏览: 50871 次
  • 性别: 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或其他支持多线程的编程语言中,如何有效地分配工作到多个线程,以便同时处理大量任务,并在任务完成后收集和处理结果。 描述中提到的"当监测到...

    java多线程并发

    因此,通过引入多线程技术,可以使得多个任务并行处理,从而显著提升程序的执行效率。 #### 三、多线程间的同步机制 在多线程环境中,线程之间的数据共享和通信是非常重要的。为了保证数据的一致性和安全性,Java...

    浅谈Java多线程处理中Future的妙用(附源码)

    "浅谈Java多线程处理中Future的妙用" 在Java多线程处理中,Future是一个非常重要的概念,它可以帮助我们更好地处理并发任务。Future是一个未来对象,里面保存着线程处理结果,它像一个提货凭证,拿着它你可以随时去...

    java多线程编程实践

    ### Java多线程编程实践 #### 一、`concurrent`包提供的集合 在Java中,`java.util.concurrent`包提供了许多高级并发工具类和容器,这些类在多线程环境中能够有效地提升程序的性能与可靠性。下面详细介绍该包中的...

    ThreadDemo.rar

    在Java编程语言中,`java.util.concurrent`(JUC)包是处理并发和多线程的核心工具包。这个包提供了一系列高效、线程安全的类和接口,使得开发者能够更好地管理和控制多线程环境。`ThreadDemo.rar`压缩包中的`...

    Java——JUC

    - `Callable`接口定义了异步任务,返回一个结果,与`Runnable`接口的区别在于`Callable`可以有返回值。 6. **CompletableFuture** - 提供了强大的异步编程模型,可以组合多个异步任务,实现链式调用,并支持多种...

    Java线程池学习资料-全

    `ThreadPoolExecutor`的`submit()`返回`Future`对象,而`ExecutorCompletionService`的`submit()`除了返回`Future`,还支持批量处理结果。 当线程池中的线程抛出异常时,如果使用`submit()`,异常会被捕获并封装在`...

    java.util.concurrent.uml.pdf

    标签“Java concurrent”是指这是一个关于Java并发编程的内容,这通常是面向希望开发多线程应用程序的Java开发者。并发编程允许程序同时处理多个任务,这对于多核心处理器和多处理器系统尤其重要。 文档的一部分...

Global site tag (gtag.js) - Google Analytics