多线程之CountDownLatch
来源:互联网 发布:淘宝升钻有什么好处 编辑:程序博客网 时间:2024/06/06 16:32
package com.test.thread;import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class CountDownLatchTest { // 模拟了100米赛跑,10名选手已经准备就绪,只等裁判一声令下。当所有人都到达终点时,比赛结束。 public static void main(String[] args) throws InterruptedException { // 开始的倒数锁 final CountDownLatch begin = new CountDownLatch(1); // 结束的倒数锁 final CountDownLatch end = new CountDownLatch(10); // 十名选手 final ExecutorService exec = Executors.newFixedThreadPool(10); for (int index = 0; index < 10; index++) { final int NO = index + 1; Runnable run = new Runnable() { public void run() { try { //如果当前计数为不为零,一直等待休眠状态,等于0就开跑啦 begin.await();//模拟运动员准备就绪,只等裁判一声枪响 Thread.sleep((long) (Math.random() * 10000)); System.out.println("No." + NO + " arrived"); } catch (InterruptedException e) { } finally { // 每个选手到达终点时,end就减一 end.countDown(); } } }; exec.submit(run); } //裁判休息了10秒,在准备叫游戏开始--裁判没叫开始谁先跑了,就下课 //裁判也是人,要休息下的。 Thread.sleep(10000); System.out.println("Game Start"); // begin减一,开始游戏,相当裁判的命令枪声 begin.countDown(); // 等待end变为0,即所有选手到达终点 end.await(); System.out.println("Game Over"); exec.shutdown(); }}
总结:CountDownLatch这例子是我搬的别人的,业务场景我还真没发现。
我先是各种DEBUG后,加了不少注释
阅读全文
0 0
- Java多线程之CountDownLatch
- Java多线程之CountDownLatch
- Java多线程之CountDownLatch
- JAVA多线程之CountDownLatch
- Java多线程之CountDownLatch
- Java多线程之CountDownLatch
- Java多线程之CountDownLatch
- Java多线程之----CountDownLatch
- Java多线程之CountDownLatch
- java多线程之CountDownLatch
- java多线程之CountDownLatch
- 多线程之CountDownLatch
- 多线程之CountDownLatch
- 多线程之CountDownLatch
- 多线程之CountDownLatch工具类
- Java多线程之CountDownLatch学习
- java 多线程之CountDownLatch用法
- java 多线程编程之CountDownLatch
- cef MasterBuildQuickStart
- Linux总结笔记5-配置虚拟主机
- 如何创建自己的网站
- 设计模式:工厂方法模式
- android 动画参考
- 多线程之CountDownLatch
- =与==
- android网络访问框架OkHttp的进一步封装
- Java笔记
- mysql性能优化-慢查询分析、优化索引和配置
- Java 抽象类和抽象方法
- 安装使用VS2015 communition 版本遇到的坑
- 最短路径(最基础,经典的模板和思想):HDU-2544最短路
- WiFi认证过程需要的协议和服务