作用:它允许一个或是多个线程等待其他的线程完成工作以后再执行。
countDown():一个线程完成以后,调用这个方法,事件计数器减一。
await() :阻塞当前线程,直到计数器为0,即所有事件完成。
import java.util.concurrent.CountDownLatch;
/**
* CountDownLatch的使用
*/
public class UseCountDownLatch {
static CountDownLatch latch = new CountDownLatch(3);
//初始化线程
private static class InitThread implements Runnable{
@Override
public void run() {
System.out.println("Thread_"+Thread.currentThread().getId()
+" ready init work !");
latch.countDown();//初始化线程完成工作了,countDown方法只扣减一次;
for(int i = 0;i < 2; i++) {
System.out.println("Thread_"+Thread.currentThread().getId()
+" continue do its work !");
}
}
}
public static void main(String[] args) throws InterruptedException {
for(int i=0; i < 3; i++){
Thread thread = new Thread(new InitThread());
thread.start();
}
latch.await();
System.out.println("Main do its work !");
}
}
本文详细介绍Java并发工具类CountDownLatch的使用方法,通过实例演示如何利用CountDownLatch使主线程等待子线程完成工作后再继续执行,适用于多线程同步场景。
1640

被折叠的 条评论
为什么被折叠?



