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