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的使用获取线程的返回结果的更多相关文章

  1. 线程池ExecutorService

    说到java开发,免不了跟多线程打交道.Executor框架便是Java 5中引入的,其内部使用了线程池机制,它在java.util.cocurrent 包下,通过该框架来控制线程的启动.执行和关闭, ...

  2. PAIP.并发编程 多核编程 线程池 ExecutorService的判断线程结束

    PAIP.并发编程 多核编程 线程池 ExecutorService的判断线程结束 ExecutorService并没有提供什么 isDone()或者isComplete()之类的方法. 作者Atti ...

  3. [Java线程] Java线程池ExecutorService

    示例 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.u ...

  4. 【Java线程】Java线程池ExecutorService

    示例 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.u ...

  5. Java线程池ExecutorService

    开篇前,我们先来看看不使用线程池的情况: new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() { @Override ...

  6. java 线程池--ExecutorService

    一 Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程. new ...

  7. Java线程池ExecutorService和CountDownLatch的小例子

    import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java ...

  8. 多线程 线程池 ExecutorService

    package org.zln.thread; import java.util.Date; import java.util.concurrent.ExecutorService; import j ...

  9. Java中的线程池ExecutorService

    示例 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.u ...

随机推荐

  1. Requirejs之AMD规范

    一.什么是AMD规范 AMD是Asynchronous Module Definition-----异步模块定义 AMD规范定义了2个函数define()与require() 下面我们来看一下定义方法 ...

  2. 贴片三极管-MOS管型号手册

    详细请查阅PDF: http://files.cnblogs.com/files/BinB-W/贴片三极管-MOS管型号手册.pdf

  3. discuz安装

    1.upload文件复制到根目录下,访问,安装 2.数据库需要提前建好 3.数据库地址默认是localhost,我安装时是127.0.0.1 4.最好在本地安装时,配置本地域名和线上域名一样,不然迁移 ...

  4. 怎样将BigDecimal转换成Int

    BigDecimal a=new BigDecimal(12.88); int b=a.intValue(); System.out.println(b);//b=12;

  5. ORA-01436: 用户数据中的CONNECT BY 循环

    起始地     目的地     距离(公里)A             B             1000A             C             1100A             ...

  6. HandlerThread 用法

    HandlerThread最大的优势在于引入MessageQueue概念,可以进行多任务队列管理. HandlerThread背后只有一个线程,所以任务是串行依次执行的.串行相对于并行来说更安全,各任 ...

  7. Java基础必备 -- 堆栈、引用传值、垃圾回收等

     在Java中,对象作为函数参数的传递方式是值传递还是引用传递?String str = "abc" 与 String str = new String("abc&quo ...

  8. c++11 auto unique_ptr 等

    c++11 条款21:尽量使用std::make_unique和std::make_shared而不直接使用new c++11 条款18: 使用std::unique_ptr来进行独享所有权的资源管理 ...

  9. [Ahoi2013]差异

    后缀数组+单调栈 代码 #include<cstdio> #include<algorithm> #include<cstring> using namespace ...

  10. 关于qt的集成开发环境

    事情是这样的,在archlinux中安装好qt5之后,只发现了一个 qt designer,这个只能用来写界面.其它的几个程序(qt assistant)算是查文档的这类辅助的程序. 记得在windo ...