`
vvggsky
  • 浏览: 65282 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

CompletionService

    博客分类:
  • J2EE
阅读更多
package thread;

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

public class TestCompletionService {
	  public static void main(String[] args) throws InterruptedException,
	      ExecutionException {
	    ExecutorService exec = Executors.newFixedThreadPool(10);
	    CompletionService<String> serv = 
	      new ExecutorCompletionService<String>(exec);

	    for (int index = 0; index < 5; index++) {
	      final int NO = index;
	      Callable<String> downImg = new Callable<String>() {
	        public String call() throws Exception {
	          Thread.sleep((long) (Math.random() * 10000));
	          return "Downloaded Image " + NO;
	        }
	      };
	      serv.submit(downImg);
	    }

	    Thread.sleep(1000 * 2);
	    System.out.println("Show web content");
	    for (int index = 0; index < 5; index++) {
	      Future<String> task = serv.take();
	      String img = task.get();
	      System.out.println(img);
	    }
	    System.out.println("End");
	    // 关闭线程池
	    exec.shutdown();
	  }
	}
分享到:
评论

相关推荐

    ExecutorService与CompletionService对比详解.docx

    如果 Future 结果没有完成,调用 get() 方法,程序会 阻塞 在那里,直至获取返回结果 先来看第一种实现方式,假设任务 A 由于参数原因,执行时间相对任务 B,C,D 都要长很多,但是按照程序的执行顺序,程序在 get()...

    个人总结的深入java多线程开发

    9)已完成任务队列CompletionService 36 10)计时器CountDownLatch 37 11)周期性同步工具CyclicBarrier 38 12)异步计算的结果Future 40 13)安排线程池ScheduledExecutorService 40 五多线程面试题 41 六其他主题 41 1)...

    Java并发编程实战

    6.3.6 示例:使用CompletionService实现页面渲染器 6.3.7 为任务设置时限 6.3.8 示例:旅行预定门户网站 第7章 取消与关闭 第8章 线程池的使用 第9章 图形用户界面应用程序 第三部分 活跃性、性能与测试 第10...

    Java 并发编程实战

    6.3.6 示例:使用CompletionService实现页面渲染器 6.3.7 为任务设置时限 6.3.8 示例:旅行预定门户网站 第7章 取消与关闭 第8章 线程池的使用 第9章 图形用户界面应用程序 第三部分 活跃性、性能与测试 第10...

    Java开发基于多线程和NIO实现聊天室源码+项目说明(含服务端+客户端).zip

    - CompletionService - log4j+slf4j日志 - 实现的功能 - 登录注销 - 单聊 - 群聊 - 客户端提交任务,下载图片并显示 - 上线下线公告 - 在线用户记录 - 批量下载豆瓣电影的图片,并打为压缩包传输给客户端 ...

    汪文君高并发编程实战视频资源全集

    ├─第一阶段 │ 源码+ppt.rar │ 高并发编程第一阶段01讲、课程大纲及主要内容介绍.wmv │ 高并发编程第一阶段02讲、简单介绍什么是线程.wmv │ 高并发编程第一阶段03讲、创建并启动线程.mp4 ...

    汪文君高并发编程实战视频资源下载.txt

    ├─第一阶段 │ 源码+ppt.rar │ 高并发编程第一阶段01讲、课程大纲及主要内容介绍.wmv │ 高并发编程第一阶段02讲、简单介绍什么是线程.wmv │ 高并发编程第一阶段03讲、创建并启动线程.mp4 ...

    线程实例(并发库引入到Java标准库 )

    有以下类的实例: ThreadPool ScheduledThread CyclicBarrier BlockingQueue CountDownLatch FutureTask CompletionService Semaphore

Global site tag (gtag.js) - Google Analytics