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();
            }
        }
    }  
  • 相关阅读:
    当模型验证未通过时,获取未通过验证的属性
    在ASP.Net MVC中进行身份认证
    c#生成验证码
    HTTP与FTP状态码
    VUEX
    JS模块化
    Vue.JS入门下
    flex布局
    asp.net Web API
    JWT加密解密
  • 原文地址:https://www.cnblogs.com/moris5013/p/11899404.html
Copyright © 2011-2022 走看看