java CountDownLatch和CyclicBarrier使用对比

CountDownLatch--类似于门锁
说明:一个或者多个线程,等待其他多个线程完成某件事情之后才能执行。
主要方法:
构造函数:CountDownLatch begin=new CountDownLatch(1);
-1方法:begin.countDown();
等待方法:begin.await(); 计数为0时,主线程就可以执行了。
使用场景:
比赛开始,选手开跑;所有选手跑完,比赛结束。
英雄联盟,所有玩家准备好,开始游戏。
注意:
CountDownLatch与join相似,但比join灵活(可以通过countDown()方法随时启动主线程,而join方法必须在子线程完全结束后,才会执行主线程的方法)。

CyclicBarrier--循环障碍物,阀门
说明:需要所有线程都到达,阀门才能打开,然后继续执行
主要方法:
构造函数:CyclicBarrier barrier=new CyclicBarrier(3);
等待方法:barrier.await();等待一组线程完成工作后,执行其他任务的线程(不是主线程)。

Semaphore--信号量控制

说明:控制某个资源被同时访问的个数。
主要方法:
构造方法:Semaphore semaphore = new Semaphore(1);
获取许可:semaphore.acquire();
释放许可:semaphore.release();
 

发布了31 篇原创文章 · 获赞 1 · 访问量 1168

猜你喜欢

转载自blog.csdn.net/quietbxj/article/details/103700673