码迷,mamicode.com
首页 > 其他好文 > 详细

十三、栅栏CyclicBarrier

时间:2018-12-24 02:33:14      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:port   sys   ++   ati   osc   throw   初始   java   current   

一、简介

栅栏CyclicBarrier的作用就是等待一组线程都准备好了,然后执行某个任务。这与CountDownLatch很相似。

但是CyclicBarrier和CountDownLatch是有区别的:

1)CyclicBarrier可以复用,你可以调用Reset方法重新初始化;CountDownLatch是一次性的。

2)CyclicBarrier是一组线程相互等待,而CountDownLatch是一个或一组线程等待另外一个或者一组线程。

JDK文档:http://tool.oschina.net/uploads/apidocs/jdk-zh/java/util/concurrent/CyclicBarrier.html

二、示例

import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;

public class CyclicBarrierDemo {

    private static CyclicBarrier barrier = new CyclicBarrier(3, new Runnable() {
        @Override
        public void run() {
            System.out.println("全都到齐了");
        }
    });

    public static void main(String[] args) throws InterruptedException {
        for (int i = 0; i < 3; i++) {
            new Thread(() -> {
                try {
                    barrier.await();
            System.out.println("end await"); }
catch (InterruptedException e) { e.printStackTrace(); } catch (BrokenBarrierException e) { e.printStackTrace(); } }).start(); System.out.println("启动 i=" + i); Thread.sleep(1000); } } }

 

十三、栅栏CyclicBarrier

标签:port   sys   ++   ati   osc   throw   初始   java   current   

原文地址:https://www.cnblogs.com/lay2017/p/10166460.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!