首页 > 编程语言 > 详细

CyclicBarrier一组线程相互等待

时间:2019-11-20 18:07:36      阅读:80      评论:0      收藏:0      [点我收藏+]
/**
 * 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();
        }
    }
}  

 

CyclicBarrier一组线程相互等待

原文:https://www.cnblogs.com/moris5013/p/11899404.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!