闭锁CountDownLatch的简单实现
来源:互联网 发布:适合上班族的网络兼职 编辑:程序博客网 时间:2024/05/06 03:39
public class TestCountDownLatch { public static void execute() throws InterruptedException{ final int n = 3; final CountDownLatch start = new CountDownLatch(1); final CountDownLatch end = new CountDownLatch(n); System.out.println("A"); Thread t = new Thread(){ public void run(){ for (int i = 0; i < n; i++) { try { start.await();// System.out.println("B"); } catch (Exception e) { } finally{ end.countDown();// } } } }; t.start(); System.out.println("C"); start.countDown(); // 到达此处时,由于finally中已经调用了三次countDown()方法,计数已经是0了 // 所以此处就不会被阻塞 end.await(); System.out.println("D"); } /** * @param args * @throws InterruptedException */ public static void main(String[] args) throws InterruptedException { execute(); }} } }; t.start(); System.out.println("C"); start.countDown(); // 到达此处时,由于finally中已经调用了三次countDown()方法,计数已经是0了 // 所以此处就不会被阻塞 end.await(); System.out.println("D"); } /** * @param args * @throws InterruptedException */ public static void main(String[] args) throws InterruptedException { execute(); }}
CountDownLatch是一个灵活的闭锁实现,何为闭锁?闭锁可以用来确保特定活动直到其他活动完成后才发生,例如:1,确保一个资源不会执行,直到它需要的资源初始化完成;2,确保一个服务不会开始,直到它依赖的其他服务都已启动;3,等待,知道活动的所有部分都为继续处理做好准备,比如多玩家的游戏中的所有玩家是否都已准备就绪。countDown()方法用来对计数器进行自减操作,await方法当计数器不为零时会一直阻塞直到计数器为0,当计数器为零时,所有阻塞的操作都会开始执行
- 闭锁CountDownLatch的简单实现
- 闭锁CountDownLatch的源码实现介绍
- 闭锁CountDownLatch的用法
- 简单使用CountDownLatch(闭锁)
- 闭锁CountDownLatch
- CountDownLatch 闭锁
- 闭锁 CountDownLatch
- 闭锁 CountDownLatch
- CountDownLatch闭锁
- java CountDownLatch(闭锁)
- 20.CountDownLatch闭锁
- 一个简单的闭锁例子
- java的闭锁 CountDownLatch 之一家人一起吃个饭
- [多线程]闭锁 通过闭锁CountDownLatch计算多线程下任务的执行时间
- 闭锁CountDownLatch与栅栏CyclicBarrier
- 闭锁CountDownLatch与栅栏CyclicBarrier
- 闭锁CountDownLatch和栅栏CyclicBarrier
- 闭锁CountDownLatch与栅栏CyclicBarrier
- Servlet第七章知识点总结——监听器
- 爸爸借500,向妈妈借500
- 每天一个linux命令(26):用SecureCRT来上传和下载文件
- WIFI与WLAN简介
- 文件读写
- 闭锁CountDownLatch的简单实现
- CreateThread()之后又马上CloseHandle()的问题
- ALSA SOC架构
- Servlet第八章知识点总结——过滤器 过滤器链
- 如何理解C# 多态中的override和new
- ArcEngine判断要素(feature)是否为multipart feature及分解(炸开)代码
- Windows Phone开发相关技术要点已经整理成书了
- C#中RSA加密解密和签名与验证的实现
- vc获取可执行文件的路径