CyclicBarrier(int parties, Runnable barrierAction) 详解

来源:互联网 发布:十大社交软件 编辑:程序博客网 时间:2024/06/06 09:27

CyclicBarrier(int parties, Runnable barrierAction)  :创建一个新的 CyclicBarrier,它将在给定数量的参与者(线程)处于等待状态时启动,并在启动 barrier 时执行给定的屏障操作,该操作由最后一个进入 barrier 的线程执行。

为了进行说明,我们使用下面的例子:

import java.util.concurrent.CyclicBarrier;public class CyclicBarrierTest2 {    static CyclicBarrier c = new CyclicBarrier(2, new A());    public static void main(String[] args) {        new Thread(new Runnable() {            @Override            public void run() {                try {                System.out.println("子:"+Thread.currentThread().toString());                    c.await();                } catch (Exception e) {                }                System.out.println(1);            }        },"子线程").start();        try {        System.out.println("主:"+Thread.currentThread().toString());            c.await();        } catch (Exception e) {        }        System.out.println(2);    }    static class A implements Runnable {        @Override        public void run() {        System.out.println(Thread.currentThread().toString());            System.out.println(3);        }    }}
测试结果如下:

主:Thread[main,5,main]子:Thread[子线程,5,main]Thread[子线程,5,main]312
或者

子:Thread[子线程,5,main]主:Thread[main,5,main]Thread[main,5,main]321
测试结果说明,任务barrierAction确实由最后一个到达屏障的线程进行执行,并且执行完了之后该线程会继续从自己当初await的地方再次开始执行。



0 1
原创粉丝点击