之前的这篇文章《Java高并发同步组件之CountDownLatch源码解析》介绍了CountDownLatch的源码分析,详细分析了其实现的原理,本文来一起看看怎么使用。
1、场景
假如现在有一场运动赛,比赛有三个选手,需要在所有选手完成比赛后宣布成绩,此时可以使用CountDownLatch来实现。
2、编码
首先创建一个类,类中定义一个CountDownLatch变量。然后在主线程调用CountDownDemo方法,向线程池提交三给任务,模拟三个选手进行比赛。然后主线程调用countDownLatch的await方法等待比赛结束。
下面来看看CountDownLatchDemo的代码。
上面这个方法,首先向线程池中提交三个任务,在每个任务中产生一个随机时间,可以当成比赛选手的耗时,每个任务休眠结束会输出该线程的比赛已结束,耗时多少。当所有线程执行完任务,主线程继续向下执行,也就是宣布比赛成绩。
3、测试结果
从输出结果可以看出,三个任务线程结束,主线程(可以当成裁判)宣布结果,程序继续向下执行。
总 结
CountDownLatch的使用可以想成一组运动员的比赛,不过其不能重复使用,也就是一组选手比赛结束,下一组选手就不能再用这个CountDownLatch变量了。