并发(三) CountDownLatch
2024-09-30 08:17:28
CountDownLatch
和CyclicBarrier的区别是,CyclicBarrier可以循环使用,CountDownLatch不可以;CyclicBarrier可以有一个Runnable参数,在所有子任务执行完成后触发一个动作。两者在模型上近似,都是等待一批固定数量的子任务执行完成后才能执行主任务。
流程如下:
示例代码如下:
@Test
public void test3() throws InterruptedException {
CountDownLatch countDownLatch = new CountDownLatch(5); ExecutorService executorService = Executors.newCachedThreadPool(); for(int i = 0; i < 5; i++) {
executorService.execute(new Task(countDownLatch));
} countDownLatch.await(); executorService.shutdown();
} public static class Task implements Runnable { CountDownLatch countDownLatch; public Task(CountDownLatch countDownLatch) {
this.countDownLatch = countDownLatch;
} @Override
public void run() {
System.err.println("当前完成的任务数目:" + countDownLatch.getCount());
countDownLatch.countDown();
}
}
最新文章
- win 10 常见问题
- securityCRT mongoDB 命令行删除(backspace/delete)无效问题
- What he did
- 解决Tomcat 6.0 只支持 J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules
- 李洪强iOS面试总结之- FMDB
- 从微信推送看Android Service的创建和销毁
- Coordinate System
- box-shadow属性
- HTML模块化:使用HTML5 Boilerplate模板
- angularJS实战(一)
- 【原创】Linux基础之sudo
- [Linux]防火墙关闭与开启
- [双系统linux] ----双系统切换导致系统时间错误
- .NET-记一次架构优化实战与方案-梳理篇
- shiro使用
- javascript基础的查缺补漏
- Announcing the Operate Preview Release: Monitoring and Managing Cross-Microservice Workflows
- ionic 开发解决ios上qq客服链接不跳转或者跳转到appstore
- android 常用渐变背景绘制
- BZOJ3298: [USACO 2011Open]cow checkers 威佐夫博弈