CountDownLatch用法
2016-03-21 16:03
471 查看
CountDownLatch是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。
假设我们周末要去旅游,出游前需要提前订好机票、巴士和酒店,都订好后就可以出发了,这个用代码怎么实现?可以用CountDownLatch。
主要方法
await(); // 使当前线程在锁存器倒计数至零之前一直等待
countDown(); // 递减锁存器的计数,如果计数到达零,则释放所有等待的线程
栗子
假设我们周末要去旅游,出游前需要提前订好机票、巴士和酒店,都订好后就可以出发了,这个用代码怎么实现?可以用CountDownLatch。
主要方法
await(); // 使当前线程在锁存器倒计数至零之前一直等待
countDown(); // 递减锁存器的计数,如果计数到达零,则释放所有等待的线程
栗子
public static void main(String[] args) { ExecutorService executor=Executors.newFixedThreadPool(5); final CountDownLatch countDownLatch=new CountDownLatch(3); executor.execute(new Runnable(){ public void run() { try{ System.out.println("订机票"); }finally{ countDownLatch.countDown(); } } }); executor.execute(new Runnable(){ public void run() { try{ System.out.println("订巴士"); }finally{ countDownLatch.countDown(); } } }); executor.execute(new Runnable(){ public void run() { try{ System.out.println("订酒店"); }finally{ countDownLatch.countDown(); } } }); try { countDownLatch.await(); System.out.println("可以出发了"); } catch (InterruptedException e) { e.printStackTrace(); } }
相关文章推荐
- 第二章 第三节 使用HADOOP分析数据
- UVA 10870(p155)----Recurrences
- jquery require.js AMD
- Django 学习
- 第三周作业 作业1
- 【c++】计算工资
- HDU 1024 Max Sum Plus Plus
- [LeetCode]题解(python):120-Triangle
- CoreData的使用
- [Unity] 使用Profiler.BeginSample()定位性能热点
- UVA 1160——X-Plosives
- Spring mvc 数据绑定及返回数据
- iOS 栈和堆的区别
- ListView + EditText
- 多态
- iOS 自定义UITableViewCell上添加UIButton按钮如何确定点击了哪一行,代码块实现
- 2016.3.16高项作业
- mysql 将查询结果拼接输出到本地文件
- 选IT不再让我迷茫
- GoldenGate配置文档,参数说明,常见错误处理