并发编程之CountDownLaunch
1、什么是CountDownLaunch
我的理解就是比如一群人去开会,这每一个人就代表一个线程,只有当所有人到齐之后才能开会,这是就需要使用CountDownLaunch。
2、先看一下不使用CountDownLaunch会带来的效果
public static void main(String[] args) throws InterruptedException {
//CountDownLatch countDownLatch = new CountDownLatch(6);
for (int i = 0; i < 6; i++) {
new Thread(()->{//表示六个人开会
System.out.println(Thread.currentThread().getName()+"\t到会议室了");
//countDownLatch.countDown();
},String.valueOf(i)).start();
}
//countDownLatch.await();
System.out.println(Thread.currentThread().getName()+"\t开始开会");
}
返回结果如下图,我们可以发现跟我们预期的结果不同,人还没有到齐就已经开会。
下面我们使用CountDownLaunch
public static void main(String[] args) throws InterruptedException {
CountDownLatch countDownLatch = new CountDownLatch(6);
for (int i = 0; i < 6; i++) {
new Thread(()->{
System.out.println(Thread.currentThread().getName()+"\t到会议室了");
countDownLatch.countDown();//一个线程执行完之后释放
},String.valueOf(i)).start();
}
countDownLatch.await();//线程等待
System.out.println(Thread.currentThread().getName()+"\t开始开会");
}
返回结果如下图:
如有不足之处,请多多指教。