线程池ExecutorService和完成服务CompletionService的使用获取线程的返回结果
package com.suning.ecif.admin.app.impl.temp;
import java.util.ArrayList;
import java.util.Collection;
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 ClearCacheTaskPoolFactory {
private static int t = 0;
private static class TaskPoolHolder {
//初始化固定大小的线程池
private static final ExecutorService service = Executors.newFixedThreadPool(10);
private static final CompletionService<Integer> cservice =
new ExecutorCompletionService<Integer>(service);
}
private ClearCacheTaskPoolFactory() {
}
public static CompletionService<Integer> getInstance() {
return TaskPoolHolder.cservice;
}
public static Future<Integer> submitTask(int i) {
Callable<Integer> task = new ClearCacheTaskPoolFactory().new ClearCacheTask(i);
return getInstance().submit(task);
}
class ClearCacheTask implements Callable<Integer> {
public ClearCacheTask(int i) {
t = i;
}
@Override
public Integer call() throws Exception {
return t;
}
}
public static void main(String[] args) throws InterruptedException, ExecutionException {
Collection<Future<Integer>> taskResults = new ArrayList<Future<Integer>>();
for(int i = 0; i < 10; i++){
taskResults.add(ClearCacheTaskPoolFactory.submitTask(i));
}
for(Future<Integer> future:taskResults){
System.out.println(future.get());
}
}
}
线程池ExecutorService和完成服务CompletionService的使用获取线程的返回结果的更多相关文章
- 线程池ExecutorService
说到java开发,免不了跟多线程打交道.Executor框架便是Java 5中引入的,其内部使用了线程池机制,它在java.util.cocurrent 包下,通过该框架来控制线程的启动.执行和关闭, ...
- PAIP.并发编程 多核编程 线程池 ExecutorService的判断线程结束
PAIP.并发编程 多核编程 线程池 ExecutorService的判断线程结束 ExecutorService并没有提供什么 isDone()或者isComplete()之类的方法. 作者Atti ...
- [Java线程] Java线程池ExecutorService
示例 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.u ...
- 【Java线程】Java线程池ExecutorService
示例 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.u ...
- Java线程池ExecutorService
开篇前,我们先来看看不使用线程池的情况: new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() { @Override ...
- java 线程池--ExecutorService
一 Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程. new ...
- Java线程池ExecutorService和CountDownLatch的小例子
import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java ...
- 多线程 线程池 ExecutorService
package org.zln.thread; import java.util.Date; import java.util.concurrent.ExecutorService; import j ...
- Java中的线程池ExecutorService
示例 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.u ...
随机推荐
- Mac OS 电脑播放 iPhone音乐
http://apple.stackexchange.com/questions/6173/can-i-play-audio-from-my-iphone-on-my-mac Simple, and ...
- Jmeter关联
一.Jmeter关联的方式: Jmeter中关联可以在需要获取数据的请求上 右键-->后置处理器 选择需要的关联方式,如下图有很多种方法可以提取动态变化数据: 二.正则表达式提取器: 1.比如 ...
- Android onMeasure方法介绍
onMeasure方法在控件的父元素正要放置它的子控件时调用.它会问一个问题,“你想要用多大地方啊?”,然后传入两个参数——widthMeasureSpec和heightMeasureSpec. 它们 ...
- storm kafka整合
public class KafkaTopo { public static void main(String[] args) { String zkRoot = "/kafka-storm ...
- jQuery源代码阅读之一——jQuery总体结构及jQuery构造函数
一.jQuery总体架构 jQuery作为一款强大的js库,由以下模块构成: (function(window,undefined){ var jQuery=function(selector,con ...
- HTML两张图片叠加问题的进一步修改
要想两张图片叠加,只需在circle添加一个Position:absolute就OK了 以上几步,很多大侠前辈都已经说过,相信不用再啰嗦,我想说的是一种扩展,将示例放到右边,可能因为我悟性低,研究了一 ...
- C++中的explicit关键字
http://www.cnblogs.com/winnersun/archive/2011/07/16/2108440.html 上面链接中的博主写的很好,我也不多说了.举得例子也很好,应该也是看了E ...
- Python 迭代器&生成器
1.内置参数 Built-in Functions abs() dict() help() min() setattr() all() dir() hex() next() slice ...
- VS 解决方案管理器和 编辑窗口同步 联动
对于题目的解释就是 当我点击一下解决方案管理器中的 某一个文档时, 编辑窗口会联动的 同步到对应的窗口。之前好像被我无意中关掉了,今天重新建立一个项目无意中发现怎么设置了 如果想点击右边的文档 ...
- 通过FTP命令上传下载
用命令如何把自己电脑上的文件上传到被入侵的电脑上呢.方法有很多.用ftp是个不错的选择.方法如下 echo open 你的ftpip >ftp.txt echo user >>f ...