zoukankan      html  css  js  c++  java
  • java 多线程 day15 CyclicBarrier 路障


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

    public class Thread1501_CyclicBarrier {
    public static void main(String[] args) {

    System.out.println(" 主线程开始执行 -----");
    ExecutorService service = Executors.newCachedThreadPool();
    final CyclicBarrier cb = new CyclicBarrier(3);
    for(int i=0;i<3;i++){
    Runnable runnable = new Runnable(){
    public void run(){
    try {
    Thread.sleep((long)(Math.random()*10000));
    System.out.println("线程" + Thread.currentThread().getName() +
    "即将到达集合地点1,当前已有" + (cb.getNumberWaiting()+1) + "个已经到达," + (cb.getNumberWaiting()==2?"都到齐了,继续走啊":"正在等候"));
    cb.await();

    Thread.sleep((long)(Math.random()*10000));
    System.out.println("线程" + Thread.currentThread().getName() +
    "即将到达集合地点2,当前已有" + (cb.getNumberWaiting()+1) + "个已经到达," + (cb.getNumberWaiting()==2?"都到齐了,继续走啊":"正在等候"));
    cb.await();
    Thread.sleep((long)(Math.random()*10000));
    System.out.println("线程" + Thread.currentThread().getName() +
    "即将到达集合地点3,当前已有" + (cb.getNumberWaiting() + 1) + "个已经到达," + (cb.getNumberWaiting()==2?"都到齐了,继续走啊":"正在等候"));
    cb.await();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    };
    service.execute(runnable);
    }
    service.shutdown();
    System.out.println(" 主线程执行结束 -----");
    }
    }
  • 相关阅读:
    基本指令
    javascript event(事件对象)详解
    Sass进阶之路,之二(进阶篇)
    Sass进阶之路,之一(基础篇)
    原型链进阶
    数据类型检测
    JavaScript引用类型和值类型
    i.mx6 Android6.0.1分析input子系统:测试
    (三)JNI常用示例
    (二)JNI方法总结
  • 原文地址:https://www.cnblogs.com/ctaixw/p/7980651.html
Copyright © 2011-2022 走看看