CountDownLatch的Demo
2018-07-06 01:25:07来源:博客园 阅读 ()
1 package com.tjy.concurrentTools; 2 3 import java.util.Random; 4 import java.util.concurrent.CountDownLatch; 5 import java.util.concurrent.TimeUnit; 6 7 /** 8 * 该类要实现10个运动员都准备就绪后,裁判的发令枪后开始跑,使用CountDownLatch实现 9 */ 10 public class SportManRun { 11 12 private static final int NUMBER = 10; 13 //10个运动员,这里计数10 14 private static CountDownLatch readyLatch = new CountDownLatch(NUMBER); 15 //发令枪只有1次 16 private static CountDownLatch startLatch = new CountDownLatch(1); 17 18 public static void main(String[] args) { 19 //召唤10个远动员 20 for (int i = 0; i < NUMBER; i++) { 21 Thread runMan = new Thread(new RunningMan(readyLatch, startLatch, "第" + (i + 1) + "运动员")); 22 runMan.start(); 23 } 24 try { 25 //等待所有远动员准备就绪 26 readyLatch.await(); 27 System.out.println("所有运动员准备就绪了!等待裁判发令枪。。。"); 28 29 } catch (InterruptedException e) { 30 e.printStackTrace(); 31 } 32 startLatch.countDown(); 33 34 System.out.println("砰!!!!!!"); 35 } 36 37 static class RunningMan implements Runnable { 38 private CountDownLatch readyLatch; 39 private CountDownLatch startLatch; 40 private String name; 41 42 public RunningMan(CountDownLatch readyLatch, CountDownLatch startLatch, String name) { 43 this.name = name; 44 this.readyLatch = readyLatch; 45 this.startLatch = startLatch; 46 } 47 48 @Override 49 public void run() { 50 int prepareTime = new Random().nextInt(6000); 51 System.out.println(name + "需要时间:" + prepareTime + "准备。。。"); 52 try { 53 Thread.sleep(prepareTime); 54 } catch (InterruptedException e) { 55 e.printStackTrace(); 56 } 57 readyLatch.countDown(); 58 System.out.println(name + "准备完毕。。。"); 59 try { 60 startLatch.await(); 61 } catch (InterruptedException e) { 62 e.printStackTrace(); 63 } 64 System.out.println("开跑!!!!"); 65 66 } 67 } 68 }
执行结果
第1运动员需要时间:4454准备。。。
第2运动员需要时间:1015准备。。。
第3运动员需要时间:5133准备。。。
第4运动员需要时间:2094准备。。。
第5运动员需要时间:4407准备。。。
第6运动员需要时间:2224准备。。。
第7运动员需要时间:1160准备。。。
第8运动员需要时间:4010准备。。。
第9运动员需要时间:5655准备。。。
第10运动员需要时间:1284准备。。。
第2运动员准备完毕。。。
第7运动员准备完毕。。。
第10运动员准备完毕。。。
第4运动员准备完毕。。。
第6运动员准备完毕。。。
第8运动员准备完毕。。。
第5运动员准备完毕。。。
第1运动员准备完毕。。。
第3运动员准备完毕。。。
第9运动员准备完毕。。。
所有运动员准备就绪了!等待裁判发令枪。。。
砰!!!!!!
开跑!!!!
开跑!!!!
开跑!!!!
开跑!!!!
开跑!!!!
开跑!!!!
开跑!!!!
开跑!!!!
开跑!!!!
开跑!!!!
Process finished with exit code 0
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- springboot~注册不同级别包里的bean~scanBasePackages 2020-06-10
- 数组小Demo 2020-05-25
- 腾讯面试居然跟我扯了半小时的CountDownLatch 2020-05-15
- 并发编程之CountDownLatch demo与源码 2020-05-14
- 非常有用的并发控制-倒计时器CountDownLatch 2020-05-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash