zoukankan      html  css  js  c++  java
  • CyclicBarrier一组线程相互等待

    /**
     * CyclicBarrier 一组线程相互等待
     */
    public class Beer {
    
        public static void main(String[] args) {
            final int count = 5;
            final CyclicBarrier barrier = new CyclicBarrier(count, new Runnable() {
                @Override
                public void run() {
                    System.out.println("All have arriced and drink beer!");
                }
            });
    
            // they do not have to start at the same time...  
            for (int i = 0; i < count; i++) {
                new Thread(new Worker(i, barrier)).start();
            }
        }
    
    }
    
    class Worker implements Runnable {
        final int id;
        final CyclicBarrier barrier;
    
        public Worker(final int id, final CyclicBarrier barrier) {
            this.id = id;
            this.barrier = barrier;
        }
    
        @Override
        public void run() {
            try {
                System.out.println(this.id + " starts to run !");
                Thread.sleep((long) (Math.random() * 10000));
                System.out.println(this.id + " arrived !");
                this.barrier.await();
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (BrokenBarrierException e) {
                e.printStackTrace();
            }
        }
    }  
  • 相关阅读:
    .NetMVC过滤器
    Vue-cli配置
    回顾2019年到今天
    八皇后问题
    约瑟夫环问题
    斐波那契函数列
    提高学习效率的方法
    感受爱阅读笔记
    Android IO流汇总
    Android的AsyncTask
  • 原文地址:https://www.cnblogs.com/moris5013/p/11899404.html
Copyright © 2011-2022 走看看