关于Java多线程之CountDownLatch使用
假设现在有6个学生在上晚自习,我们创建6个线程来代表6个学生,只有当6个学生都下晚自习出了教室之后,假设main线程代表班长,此时班才能锁门走人…也即是,前面6个学生线程执行完任务之后,mian线程才可执行,请看如何使用CountDownLatch实现:
import java.util.concurrent.CountDownLatch;
public class CountDownLatchDemo {
public static void main(String[] args) throws Exception{
CountDownLatch count = new CountDownLatch(6);
//创建6个线程,模拟6个学生
for (int i = 1; i <= 6; i++) {
new Thread(() -> {
System.out.println(Thread.currentThread().getName() +"\t"+ "上完自习走人......");
//每个线程执行完成后将初始计数减一
count.countDown();
},String.valueOf(i)).start();
}
//防止main线程执行,在此处阻塞,当计数为0时,会通知main线程继续执行
count.await();
System.out.println(Thread.currentThread().getName() + "关门走人...");
}
}
执行结果:
5 上完自习走人......
1 上完自习走人......
4 上完自习走人......
6 上完自习走人......
2 上完自习走人......
3 上完自习走人......
main关门走人...
上面执行结果保证了当所有线程都执行完毕后,main线程方可执行…
来源:CSDN
作者:Wang Sheng
链接:https://blog.csdn.net/weixin_39322708/article/details/103722504