ExecutorService invokeAll 实例(转)
10个班级,每个班级20名学生,在指定的时间内查询每个班级学生的集合。
- package cn.com.ld.study.thread;
 - import java.util.ArrayList;
 - import java.util.Collection;
 - import java.util.HashMap;
 - import java.util.List;
 - import java.util.Map;
 - import java.util.concurrent.Callable;
 - import java.util.concurrent.ExecutionException;
 - import java.util.concurrent.ExecutorService;
 - import java.util.concurrent.Executors;
 - import java.util.concurrent.Future;
 - import java.util.concurrent.TimeUnit;
 - public class FutureTest {
 - //缓存操作数据集
 - private static final Map<Integer, List<Student>> sutdenMap = new HashMap<Integer, List<Student>>();
 - //初始化操作数据
 - static {
 - List<Student> stuList = null;
 - Student stu;
 - for (int i = 0; i < 10; i++) {
 - stuList = new ArrayList<Student>();
 - for (int j = 0; j < 2; j++) {
 - stu = new Student(j, "zld_" + i + "." + j, i);
 - stuList.add(stu);
 - }
 - sutdenMap.put(i, stuList);
 - }
 - }
 - public static class Student {
 - private int id;
 - private String name;
 - private int classID;
 - public Student(int id, String name, int classID) {
 - this.id = id;
 - this.name = name;
 - this.classID = classID;
 - }
 - public String toString() {
 - return Student.class.getName() + "(id:" + this.id + ",name:"
 - + this.name + ")";
 - }
 - }
 - /**
 - * @filename: SearchTask
 - * @description: 查询任务
 - * @author lida
 - * @date 2013-4-1 下午3:02:29
 - */
 - public static class SearchTask implements Callable<List<Student>> {
 - public final int classID;
 - public long sleepTime;
 - /**
 - * <p>Title: </p>
 - * <p>Description: </p>
 - * @param classID 班级编号
 - * @param sleepTime 模拟操作所用的时间数(毫秒)
 - */
 - SearchTask(int classID, long sleepTime) {
 - this.classID = classID;
 - this.sleepTime = sleepTime;
 - }
 - @Override
 - public List<Student> call() throws Exception {
 - //模拟操作所用的时间数(毫秒)
 - Thread.sleep(sleepTime);
 - List<Student> stuList = sutdenMap.get(classID);
 - return stuList;
 - }
 - }
 - public static void main(String[] args) {
 - FutureTest ft = new FutureTest();
 - ExecutorService exec = Executors.newCachedThreadPool();
 - List<SearchTask> searchTasks = new ArrayList<SearchTask>();
 - SearchTask st;
 - for (int i = 0; i < 10; i++) {
 - st = new SearchTask(i, 2001);//指定2001 毫米为最大执行时间
 - searchTasks.add(st);
 - }
 - try {
 - //要求认为在2000毫秒内返回结果,否则取消执行。
 - List<Future<List<Student>>> futures = exec.invokeAll(searchTasks,
 - 2000, TimeUnit.MILLISECONDS);//invokeAll 第一个参数是任务列表;第二个参数是过期时间;第三个是过期时间单位
 - for (Future<List<Student>> future : futures) {
 - List<Student> students = future.get();
 - for (Student student : students) {
 - System.out.println(student.toString());
 - }
 - }
 - exec.shutdown();
 - } catch (InterruptedException e) {
 - e.printStackTrace();
 - Thread.interrupted();
 - } catch (ExecutionException e) {
 - e.printStackTrace();
 - }
 - }
 - }
 - http://zld406504302.iteye.com/blog/1840091
 
ExecutorService invokeAll 实例(转)的更多相关文章
- ExecutorService.invokeAny()和ExecutorService.invokeAll()的使用剖析
		
ExecutorService是JDK并发工具包提供的一个核心接口,相当于一个线程池,提供执行任务和管理生命周期的方法.ExecutorService接口中的大部分API都是比较容易上手使用的,本文主 ...
 - Java并发专题 带返回结果的批量任务运行 CompletionService ExecutorService.invokeAll
		
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/27250059 普通情况下,我们使用Runnable作为主要的任务表示形式,可是R ...
 - Java并发专题 带返回结果的批量任务执行 CompletionService ExecutorService.invokeAll(转)
		
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/27250059 一般情况下,我们使用Runnable作为基本的任务表示形式,但是R ...
 - java并发编程框架 Executor   ExecutorService   invokeall
		
首先介绍两个重要的接口,Executor和ExecutorService,定义如下: public interface Executor { void execute(Runnable command ...
 - 并发编程-concurrent指南-线程池ExecutorService的实例
		
1.new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() { @Override public void run() { ...
 - Java多线程学习笔记(二)——Executor,Executors,ExecutorService比较
		
Executor:是Java线程池的超级接口:提供一个execute(Runnable command)方法;我们一般用它的继承接口ExecutorService. Executors:是java.u ...
 - java高级---->Thread之ExecutorService的使用
		
今天我们通过实例来学习一下ExecutorService的用法.我徒然学会了抗拒热闹,却还来不及透悟真正的冷清. ExecutorService的简单实例 一.ExecutorService的简单使用 ...
 - Executor(一)ExecutorService 线程池
		
Executor(一)ExecutorService 线程池 本篇主要涉及到的是 java.util.concurrent 包中的 ExecutorService.ExecutorService 就是 ...
 - cocurrent包ExecutorService线程池
		
16. 执行器服务 ExecutorService java.util.concurrent.ExecutorService 接口表示一个异步执行机制,使我们能够在后台执行任务.因此一个 Execut ...
 
随机推荐
- 安装zookeeper集群
			
zookeeper集群的安装 顾名思义zookeeper就是动物园管理员,他是用来管hadoop(大象).Hive(蜜蜂).pig(小猪)的管理员, Apache Hbase和 Apache So ...
 - 【Linux驱动】TQ2440 LED驱动程序
			
★整体介绍 LED驱动程序主要实现了TQ2440开发板上的4个LED灯的硬件驱动,实现了对引脚GPIOB5.GPIOB6.GPIOB7.GPIOB8的高低电平设置(common-smdk.c中已经实现 ...
 - hdu 4464 水
			
http://acm.hdu.edu.cn/showproblem.php?pid=4464 现场赛总会有水题,这就是最水的一道,预计也就是能当高校的上机题,保研用,呵呵~~~ #include &l ...
 - Oracle数据库的锁类型
			
Oracle数据库的锁类型 博客分类: oracle Oracle数据库的锁类型 根据保护的对象不同,Oracle数据库锁可以分为以下几大类:DML锁(data locks,数据锁),用于保护 ...
 - CentOS下tmux安装与使用
			
tmux介绍: tmux它是BSDScreen替代品,相对于Screen,它更加先进:支持屏幕切分,并且具备丰富的命令行參数,使其能够灵活.动态的进行各种布局和操作.它能够做到一条命令就启动起来(强大 ...
 - Vue.js学习与理解
			
Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据驱动的 web 界面的库.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件. Vue.js 自身不 ...
 - Embedding Lua, in Scala, using Java(转)
			
LuaJ I was reading over the list of features that CurioDB lacks compared to Redis , that I’d previou ...
 - 【剑指offer】打印单列表从尾部到头部
			
转载请注明出处:http://blog.csdn.net/ns_code/article/details/25028525 剑指offer上的第五题,在九度OJ上測试通过. 时间限制:1 秒 内存限制 ...
 - Android SwipeRefreshLayout 官方下拉刷新控件介绍
			
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24521483 下面App基本都有下拉刷新的功能,以前基本都使用XListView ...
 - Centos  memcached的php拓展  管理界面
			
确定已安装apache 一.安装php5 1.安装libxml2 tar zxvf libxml2-.tar.gz cd libxml2- ./configure --prefix=/usr/loca ...