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(" 主线程执行结束 -----");
    }
    }
  • 相关阅读:
    ASP.NET MVC 几种 Filter 的执行过程源码解析
    C#中的线程二(BeginInvoke和Invoke)
    C#中的线程一(委托中的异步)
    C#比较dynamic和Dictionary性能
    C#微信公众平台开发—高级群发接口
    js 关闭浏览器
    切图神器 --- Assistor
    切图 -- cutterman
    mac上用teamviewer远程windows输入问题
    A quick introduction to HTML
  • 原文地址:https://www.cnblogs.com/ctaixw/p/7980651.html
Copyright © 2011-2022 走看看