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(" 主线程执行结束 -----");
    }
    }
  • 相关阅读:
    查看SQL Server被锁的表以及如何解锁【转】
    JQUERY的$(function(){})和window.onload=function(){}的区别【转】
    安装和使用Redis【转】
    RabbitMQ的简单应用【转】
    Redis集群的搭建【转】
    Spring--如何解决循环依赖
    分布式事务--2PC(两阶段提交)
    CAP理论
    JVM垃圾回收机制
    Redis面试题
  • 原文地址:https://www.cnblogs.com/ctaixw/p/7980651.html
Copyright © 2011-2022 走看看