CountDownLatch可以调整线程执行顺序
CountDownLatch主要有两个方法: await()和countDown()
- 当一个或多个线程调用await方法时,这些线程会阻塞。
- 其它线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞), 当计数器的值变为0时,因await方法阻塞的线程会被唤醒,继续执行。
public class Demo {
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班长关门走人");
}
}
//输出
1 离开教室
0 离开教室
2 离开教室
3 离开教室
4 离开教室
5 离开教室
main 班长关门走人