zoukankan      html  css  js  c++  java
  • java 多线程 day16 CountDownLatch 倒计时计数器


    import java.util.concurrent.CountDownLatch;
    import java.util.concurrent.CyclicBarrier;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;

    public class Thread1601_CountDownLatch {

    public static void main(String[] args) {
    ExecutorService service = Executors.newCachedThreadPool();
    final CountDownLatch cdOrder = new CountDownLatch(1); //裁判吹口哨,开始跑
    final CountDownLatch cdAnswer = new CountDownLatch(3); //裁判宣布结果
    for(int i=0;i<3;i++){
    Runnable runnable = new Runnable(){
    public void run(){
    try {
    System.out.println("线程" + Thread.currentThread().getName() +
    "正准备接受命令");
    cdOrder.await();
    System.out.println("线程" + Thread.currentThread().getName() +
    "已接受命令");
    Thread.sleep((long)(Math.random()*10000));
    System.out.println("线程" + Thread.currentThread().getName() +
    "回应命令处理结果");
    cdAnswer.countDown();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    };
    service.execute(runnable);
    }
    try {
    Thread.sleep((long)(Math.random()*10000));

    System.out.println("线程" + Thread.currentThread().getName() +
    "即将发布命令");
    cdOrder.countDown();
    System.out.println("线程" + Thread.currentThread().getName() +
    "已发送命令,正在等待结果");
    cdAnswer.await();
    System.out.println("线程" + Thread.currentThread().getName() +
    "已收到所有响应结果");
    } catch (Exception e) {
    e.printStackTrace();
    }
    service.shutdown();

    }
    }
  • 相关阅读:
    Qt读取JSON和XML数据
    IOS设计模式学习(19)策略
    Android学习笔记(二)之异步加载图片
    ETL-Career RoadMap
    HDU 1501 & POJ 2192 Zipper(dp记忆化搜索)
    CodeForces 242E
    推荐:室内定位API
    基于单片机的电子密码锁的实现
    [nagios监控] NRPE: Unable to read output 的原因及排除
    (ubuntu)在andorid andk工程中使用ccache加速编译速度
  • 原文地址:https://www.cnblogs.com/ctaixw/p/7980976.html
Copyright © 2011-2022 走看看