概要:
CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了**
package com.juc;
import java.util.concurrent.CountDownLatch;
public class CountdownLatchTest {
public static void main(String[] args) {
System.out.println("子线程还未开始执行!主线程开始执行!");
final CountDownLatch countDownLatch = new CountDownLatch(3);
for (int i=0;i<3;i++){
new Thread(){
public void run(){
System.out.println("子线程"+Thread.currentThread().getName()+"正在执行!");
try {
Thread.sleep(3000);
System.out.println("子线程"+Thread.currentThread().getName()+"执行结束!");
countDownLatch.countDown();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
}
try {
System.out.println("等待子线程执行结束!");
countDownLatch.await();
System.out.println("子线程执行结束!主线程开始执行!");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
执行结果: