十栅栏CyclicBarrier

Posted lay2017

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十栅栏CyclicBarrier相关的知识,希望对你有一定的参考价值。

一、简介

栅栏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的主要内容,如果未能解决你的问题,请参考以下文章

CyclicBarrier

3.1.6 循环栅栏:CyclicBarrier

JAVA并发包源码分析循环栅栏:CyclicBarrier

栅栏cyclicbarrier

24.循环栅栏 CyclicBarrier

栅栏——CyclicBarrier