陕西省门户网站建设政策,用asp做的大型网站,建设网站元素搜索引擎,北京seo推广外包CyclicBarrier是一个同步辅助类#xff0c;它允许一组线程互相等待#xff0c;直到到达某个公共屏障点 (common barrier point)。今天我们就学习一下CyclicBarrier的用法。 CyclicBarrier的简单使用 类CyclicBarrier不仅有CountDownLatch所具有的功能#xff0c;还可以实现屏… CyclicBarrier是一个同步辅助类它允许一组线程互相等待直到到达某个公共屏障点 (common barrier point)。今天我们就学习一下CyclicBarrier的用法。 CyclicBarrier的简单使用 类CyclicBarrier不仅有CountDownLatch所具有的功能还可以实现屏障等待的功能也就是阶段性同步它在使用上的意义在于可以循环地实现线程要一起做任务的目标而不是像类CountDownLatch一样仅仅支持一次线程与同步点阻塞的特性。 关于CyclicBarrier常用的方法的介绍 package com.linux.huhx.concurreny;import java.io.IOException;
import java.util.Random;
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;public class CyclicBarrierTest1 {public static void main(String[] args) throws IOException, InterruptedException {/*** 1、如果参数3的话三个线程的await执行完parties只能加到3。那么子线程await后续的方法就不能执行* 2、如果参数3的话三个线程的await执行完parties能加到3。所以子线程await后续的方法能执行* 3、如果参数3的话当第二个线程await执行完之后parties加到了2。??????*/CyclicBarrier barrier new CyclicBarrier(3);ExecutorService executor Executors.newFixedThreadPool(3);executor.submit(new Thread(new Runner(barrier, 1号选手)));executor.submit(new Thread(new Runner(barrier, 2号选手)));executor.submit(new Thread(new Runner(barrier, 3号选手)));Thread.sleep(200);System.out.println(in main method after);executor.shutdown();}public static class Runner implements Runnable {// 一个同步辅助类它允许一组线程互相等待直到到达某个公共屏障点 (common barrier point)private CyclicBarrier barrier;private String name;public Runner(CyclicBarrier barrier, String name) {super();this.barrier barrier;this.name name;}Overridepublic void run() {try {Thread.sleep(new Random().nextInt(1000));System.out.println(name 准备好了...);// barrier的await方法在所有参与者都已经在此 barrier 上调用 await 方法之前将一直等待。barrier.await();} catch (InterruptedException e) {e.printStackTrace();} catch (BrokenBarrierException e) {e.printStackTrace();}System.out.println(name 起跑);}}
} 运行的结果如下执行的结果不固定 in main method after
2号选手 准备好了...
1号选手 准备好了...
3号选手 准备好了...
2号选手 起跑
1号选手 起跑
3号选手 起跑 友情链接 比较好的参考博客http://blog.csdn.net/shihuacai/article/details/8856407 转载于:https://www.cnblogs.com/huhx/p/baseusejavaCyclicBarrier.html