当前位置:   article > 正文

ExecutorService多线程同步,待所有线程执行结束后主线程继续运行_java threadpoolexecutor 同步执行完执行后面

java threadpoolexecutor 同步执行完执行后面
  1. public static void main(String[] args) {
  2.     ExecutorService exec = Executors.newFixedThreadPool(5);
  3.     List<Future> fuList = new ArrayList<Future>();
  4.     for (int i = 0; i < 10; i++) {
  5.         int a = i;
  6.         Future<String> f = null;
  7.         f = exec.submit(new Callable<String>() {
  8.             @Override
  9.             public String call() throws Exception {
  10.                 System.out.println("线程:【" + a +"】开始执行");
  11.                 Thread.sleep(1000*a);
  12.                 return a + "返回值";
  13.             }
  14.         });
  15.         if (f != null) {
  16.         // f对象会直接放到fuList中,不用担心f为空
  17.             System.out.println("线程:【" + a +"】执行结束");
  18.             fuList.add(f);
  19.         }
  20.     }
  21.     try{
  22.         System.out.println("fuList:"+ fuList.size());
  23.         for (Future<String> f : fuList) {
  24.             if(f!=null){
  25.             // f.get获取每个线程的执行结果,单线程获取
  26.                 System.out.println("线程执行结果:" + f.get());
  27.             }
  28.         }
  29.         System.out.println("isTerminated:" + exec.isTerminated());
  30.     }catch (Exception e){
  31.     }finally {
  32.         // 关闭线程池
  33.         exec.shutdown();
  34.     }
  35. }

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号