一,CountDownLatch
作用:CountDownLatch类能够使一个线程等待其他线程完成各自的工作后再执行。
使用场景:Zookeeper分布式锁,Jmeter模拟高并发等。
工作原理:CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,通过调用``countDown();`方法使计数器的值就会减1,当计数器值到达0时,它表示所有的线程已经完成了任务,然后在闭锁上等待的线程就可以恢复执行任务。
public class CountDownLatchTest {
private static CountDownLatch countDownLatsh = new CountDownLatch(5);
private static class Player implements Runnable{
private Integer index;
public Player(Integer index){
this.index = index;
}
@Override
public void run() {
System.out.println("玩家"+index+"准备完成");
countDownLatsh.countDown();
}
}
public static void main(String[] args) throws InterruptedException {
for(int i = 0; i < 5; i++){
new Thread(new Player(i)).start();
}
countDownLatsh.await();
System.out.println("玩家准备完毕,开始游戏");
}
}