• 线程池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());
         }
     }
    }

  • 相关阅读:
    Vue基本指令
    C primer plus 6 编程练习答案
    Archlinux安装总结
    xcfe桌面快捷键整理
    openSUSE XFCE桌面 多媒体解码器安装
    Arch i3wm
    arch xfce快捷键
    Archlinux配置~小米笔记本Air 13.3英寸版本
    Archlinux安装指南~小米笔记本Air 13.3英寸版本
    Linux~Archer 进化之路
  • 原文地址:https://www.cnblogs.com/jianwei-dai/p/5884064.html
Copyright © 2020-2023  润新知