CyclicBarrier使用案例

CyclicBarrier初始化时规定一个数目,然后计算调用了CyclicBarrier.await()进入等待的线程数。当线程数达到了这个数目时,所有进入等待状态的线程被唤醒并继续。
CyclicBarrier就象它名字的意思一样,可看成是个障碍, 所有的线程必须到齐后才能一起通过这个障碍。
CyclicBarrier初始时还可带一个Runnable的参数, 此Runnable任务在CyclicBarrier的数目达到后,所有其它线程被唤醒前被执行。

class Writer extends Thread {
private CyclicBarrier cyclicBarrier;
public Writer(CyclicBarrier cyclicBarrier){
this.cyclicBarrier=cyclicBarrier;
}
@Override
public void run() {
System.out.println(“线程” + Thread.currentThread().getName() + “,正在写入数据”);
try {
Thread.sleep(3000);
} catch (Exception e) {
// TODO: handle exception
}
System.out.println(“线程” + Thread.currentThread().getName() + “,写入数据成功…..”);

    try {
        cyclicBarrier.await();
    } catch (Exception e) {
    }
    System.out.println("所有线程执行完毕..........");
}

}

public class Test001 {

public static void main(String[] args) {
    CyclicBarrier cyclicBarrier=new CyclicBarrier(5);
    for (int i = 0; i < 5; i++) {
        Writer writer = new Writer(cyclicBarrier);
        writer.start();
    }
}

}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 591235401@qq.com

文章标题:CyclicBarrier使用案例

本文作者:阿杜同学

发布时间:2019-01-21, 19:40:42

最后更新:2019-01-21, 19:40:42

原始链接:http://yoursite.com/2019/01/21/CyclicBarrier%E4%BD%BF%E7%94%A8%E6%A1%88%E4%BE%8B/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录