閱讀740 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Java多線程--讓主線程等待所有子線程執行完畢代碼

采用CountDownLatch類來實現

 

 

主線程 

 

package test;

import java.util.concurrent.CountDownLatch;

public class Main {

 /**
  *
  * @author Administrator/2012-3-1/上午09:36:55
  */
 public static void main(String[] args) {

  int threadNum = 10;
  CountDownLatch threadSignal = new CountDownLatch(threadNum);// 初始化countDown

  for (int i = 0; i < threadNum; i++) {// 開threadNum個線程

   Thread t = new ImportThread(i,threadSignal);
   t.start();
  }
  try {
   threadSignal.await();
  } catch (InterruptedException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }// 等待所有子線程執行完
  System.out.println(Thread.currentThread().getName() + "結束.");// 打印結束標記

 }

}

 

 

子線程:

package test;

import java.util.concurrent.CountDownLatch;

public class ImportThread extends Thread {
 private CountDownLatch threadsSignal;
 
 private  int index;

 public ImportThread(int index,CountDownLatch threadsSignal) {
  this.threadsSignal = threadsSignal;
  this.index=index;
 }

 @Override
 public void run() {
  System.out.println(Thread.currentThread().getName() + "開始...");
  // Do somethings
  System.out.println(Thread.currentThread().getName()+"do execute ...");
  threadsSignal.countDown();// 線程結束時計數器減1
  System.out.println(Thread.currentThread().getName() + "結束. 還有" + threadsSignal.getCount() + " 個線程");
 }
}

 

 


 

最後更新:2017-04-02 22:16:29

  上一篇:go html中常用的table表格的css
  下一篇:go SYSTEM.GC FINALIZE小小的注釋