多线程之线程的百米赛跑
来源:互联网 发布:怪物猎人XX数据库安卓 编辑:程序博客网 时间:2024/05/05 06:21
西城旧梦梦旧人 2017-06-13 22:42
在百米赛跑中,多个参赛队员在听到发令枪响之后,开始跑步,到达终点后结束计时,然后统计各个队员的成绩。而这个在线程中需要考虑两点,第一:发令枪响,这是所有跑步队员(线程)接收到的出发信号,此处涉及到裁判(主线程)如何通知跑步者(子线程)的问题;第二:如何知道所有跑步者完成了赛跑,也就是主线程如何知道子线程已经全部完成,这有很多种实现方法,这边我们使用CountDownLatch工具类来实现。具体看以下代码:
CountDownLatch类是一个倒数的同步计数器,在程序中启动了两个计数器,一个是开始计数器begin,表示的是发令枪,另外是结束计数器,这里是有十个,表示的是每个线程的执行情况,也就是跑步者是否跑完比赛。程序的逻辑如下:
10个线程都开始运行,执行到begin.await()后线程阻塞,等待begin的计数变为0
主线程调用begin的CountDown方法,是begin的计数器为0
10个线程继续运行
主线程继续运行下一个语句,end的计数器不为0,主线程等待
每个线程运行结束时把end的计数器减1,标志着本线程运行完毕
10个线程全部结束,end的计数器为0
主线程继续执行,打印出成绩平均值
CountDownLatch的作用是控制一个计数器,每个线程在运行完毕后会执行CountDown,表示自己运行结束,这对于多个子任务的计算特别有效,比如一个异步任务需要拆分成10个子任务执行,主任务必须要知道子任务是否完成,所有子任务完成后才能进行合并计算,从而保证了一二主任务的逻辑的正确性。这就是CountDownLatch的作用。
谢谢大家的收看~
喜欢的关注一波
阅读全文
0 0
- 多线程之线程的百米赛跑
- 运动员百米赛跑
- phaser模拟百米赛跑
- CountDownLatch计数(百米赛跑模拟,子线程好比运动员,主线程好比裁判员)
- java实现龟兔百米赛跑程序
- 线程之龟兔赛跑
- 多线程程序设计之龟兔赛跑
- java多线程之龟兔赛跑问题
- 多线程小案例之龟兔赛跑
- java线程之龟兔赛跑
- 多线程之线程的中止
- 多线程之线程的开启
- 多线程之线程的中止
- 多线程之线程的状态
- 多线程之线程的锁
- 求百米运动员的平均速度
- 龟兔赛跑之Java多线程通讯初识
- 多线程图形版龟兔赛跑
- 贝叶斯网络--HMM
- Java性能分析工具&&JProfiler
- 将url网址转换成对象
- Linux 内存管理浅析
- 如何录制Gif动态图片
- 多线程之线程的百米赛跑
- CSDN物联网学习5 从芯片到云端 Python物联网全栈开发经验教训共享
- ftp上传异常
- Python列表》》》
- Linux 内存管理浅析
- Spring测试
- jsp隐含对象
- 敏感词过滤-AC自动机
- Oracle EBS OM处理销售挑库卡在待定事务处理和保留中