Java多線程(ExecutorService), 等待所有線程執行完畢.


常用的兩種方式:

第一種方式:來自大神cletus的回答, 原文鏈接

  1.  
    ExecutorService taskExecutor = Executors.newFixedThreadPool( 4);
  2.  
    while(...) {
  3.  
    taskExecutor.execute( new MyTask());
  4.  
    }
  5.  
    taskExecutor.shutdown();
  6.  
    try {
  7.  
    taskExecutor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
  8.  
    } catch (InterruptedException e) {
  9.  
    ...
  10.  
    }

第二種方式:來自大神ChssPly76的回答, 原文鏈接

  1.  
    CountDownLatch latch = new CountDownLatch(totalNumberOfTasks);
  2.  
    ExecutorService taskExecutor = Executors.newFixedThreadPool( 4);
  3.  
    while(...) {
  4.  
    taskExecutor.execute( new MyTask());
  5.  
    }
  6.  
     
  7.  
    try {
  8.  
    latch.await();
  9.  
    } catch (InterruptedException E) {
  10.  
    // handle
  11.  
    }

然后在線程方法中加入:

  1.  
    try {
  2.  
    ...
  3.  
    } catch (Exception e) {
  4.  
    e.printStackTrace();
  5.  
    } finally {
  6.  
    countDownLatch.countDown();
  7.  
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM