规定执行的子线程数
只有满足所规定的子线程数都执行完毕后 主线程才能执行
否则主线程会一直等待
原理其实是通过-1操作来实现的 即使没有线程 直接执行-1操作也行
直到将所规定的数减至0即可
public static void main(String[] args) throws Exception {final CountDownLatch cdl = new CountDownLatch(4);//这里定义四个子线程数//每个线程执行完后 执行减一操作 直到减到0 主线程才能执行new Thread(new Runnable() {@Overridepublic void run() {try {Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("购买海鲜");cdl.countDown();//执行-1操作}}).start();new Thread(new Runnable() {@Overridepublic void run() {System.out.println("购买牛羊肉");try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}cdl.countDown();//执行-1操作}}).start();new Thread(new Runnable() {@Overridepublic void run() {System.out.println("购买火锅底料和蘸料");try {Thread.sleep(800);} catch (InterruptedException e) {e.printStackTrace();}cdl.countDown();//执行-1操作}}).start();new Thread(new Runnable() {@Overridepublic void run() {System.out.println("购买青菜");try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}cdl.countDown();//执行-1操作}}).start();// 等待食材购买完成cdl.await();//如果此时只有三个线程执行了减一操作 那么这个方法就会一直阻塞等待 直到执行了第四个减一操作System.out.println("开始吃火锅!!");}
