CountDownLatch--一组线程完成后其他线程才执行(二)
来源:互联网 发布:网络歌曲 大连站 编辑:程序博客网 时间:2024/06/07 20:36
问题:一个团队赛跑游戏,最后要计算团队赛跑的成绩,主线程计算最后成绩,要等到所有
import java.util.Random;import java.util.concurrent.CountDownLatch;public class CountDownLatchTest2 {public static void main(String[] args) throws InterruptedException {CountDownLatch startSignal = new CountDownLatch(1);CountDownLatch doneSignal = new CountDownLatch(10);//四个人赛跑,这4个可以写一个for循环for (int i = 0; i < 10; i++) {new Thread(new Worker2(startSignal, doneSignal)).start();}System.out.println("线程虽然开启,但是startSignal还未到0,以下让start到0");//由于startSignal是1,上边的4个线程还不能执行startSignal.countDown(); // startSignal=0,线程可以开始执行了doneSignal.await(); // 判断上边4个是否执行完了,如果是,则允许下边的代码执行//开始执行另外一个任务System.out.println("比赛统计...");}}//第一种:等待一个开始信号后,几个线程开始执行class Worker2 implements Runnable {private final CountDownLatch startSignal;private final CountDownLatch doneSignal; //共用的资源Worker2(CountDownLatch startSignal, CountDownLatch doneSignal) {this.startSignal = startSignal;this.doneSignal = doneSignal;}@Overridepublic void run() {try {startSignal.await(); //startSignal的计数到0了吗?到0了,才能执行doWork2();doneSignal.countDown();} catch (InterruptedException ex) {} }void doWork2() {int t=new Random().nextInt(100)+1;System.out.println(Thread.currentThread().getName()+"选手用时:"+t+"s");}}
//结果线程虽然开启,但是startSignal还未到0,以下让start到0Thread-0选手用时:36sThread-1选手用时:53sThread-2选手用时:64sThread-3选手用时:87sThread-4选手用时:5sThread-5选手用时:56sThread-6选手用时:63sThread-7选手用时:72sThread-8选手用时:6sThread-9选手用时:94s比赛统计...
http://blog.csdn.net/zhujiangtaotaise/article/details/60570882
阅读全文
0 0
- CountDownLatch--一组线程完成后其他线程才执行(二)
- CountDownLatch--一组线程完成后其他线程才执行(一)
- CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待
- JAVA多线程—CountDownLatch-一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。
- 如何等待一个线程完成后才继续执行之后的操作
- Java多线程执行,主程序等待其他线程执行完成
- 线程辅助类(二)--CountDownLatch
- CountDownLatch控制线程执行顺序
- java线程中CyclicBarrier的使用—实现一组线程“集齐”后,再进行其他操作
- java线程池中任务执行完成后再次执行
- CountDownLatch 控制多线程 让多个线程执行完后再依次做其他的
- CountDownLatch使用countDown方法来触发其他等待线程再执行的问题
- Java线程基础-CountDownLatch-批量执行多线程完成,再由主线程发起
- CountDownLatch--控制三个线程执行顺序(三)
- 主线程等待所有子线程完成后再执行
- C#多线程之所有线程执行完成后
- 线程CountDownLatch
- CountDownLatch 控制多个线程执行顺序
- 第9章 EBASIC脚本语言及应用
- hadoop之文件系统HA搭建的配置细节
- Matlab中常用的空间域滤波和频率域滤波
- SVN标记 trunk tag branch
- OpenWRT系统编译
- CountDownLatch--一组线程完成后其他线程才执行(二)
- 表单验证
- bash shell 学习笔记
- 算法:图的普里姆算法最小生成树-数据结构(22)
- 【剑指offer-解题系列(15)】反转链表
- html5调用手机相机并压缩、上传
- android gps机制分析--之三
- 女装大佬
- 1142: 简单的事情