zoukankan      html  css  js  c++  java
  • CyclicBarrier

     /**
    * CyclicBarrier 线程计数器
    *
    */
    1
    import java.util.concurrent.BrokenBarrierException; 2 import java.util.concurrent.CyclicBarrier; 3 4 public class CyclicBarrierTest { 5 private static final int THREAD_COUNT = 10; 6 7 public static CyclicBarrier barrier = new CyclicBarrier(THREAD_COUNT); 8 9 public static void main(String[] args) { 10 for(int i = 0; i<THREAD_COUNT; i++){ 11 new Thread(new WorkThread(barrier)).start(); 12 } 13 } 14 15 } 16 17 class WorkThread implements Runnable{ 18 private CyclicBarrier barrier; 19 20 public WorkThread(CyclicBarrier barrier){ 21 this.barrier = barrier; 22 } 23 24 @Override 25 public void run() { 26 try { 27 System.out.println(Thread.currentThread().getName() + "working before await()"); 28 barrier.await();//线程在此等待,直到所有线程到达。。。才开始往下执行 29 System.out.println(Thread.currentThread().getName() + "working after await()"); 30 } catch (InterruptedException e) { 31 e.printStackTrace(); 32 } catch (BrokenBarrierException e) { 33 e.printStackTrace(); 34 } 35 } 36 }

    结果

    Thread-0working before await()
    Thread-1working before await()
    Thread-3working before await()
    Thread-2working before await()
    Thread-5working before await()
    Thread-4working before await()
    Thread-7working before await()
    Thread-9working before await()
    Thread-6working before await()
    Thread-8working before await()


    Thread-0working after await()
    Thread-8working after await()
    Thread-1working after await()
    Thread-3working after await()
    Thread-2working after await()
    Thread-5working after await()
    Thread-4working after await()
    Thread-9working after await()
    Thread-6working after await()
    Thread-7working after await()

     从上面的结果,可以知道:

     CyclicBarrier barrier = new CyclicBarrier(THREAD_COUNT); 当调用barrier.await()方法时,当所有线程到达时,才会开始执行后面的代码。这个类很有用,平时自己做一些测试例子是比较常用的
  • 相关阅读:
    Contains Duplicate III
    Contains Duplicate
    bitmap
    机器人的运动范围
    矩阵中的路径
    不要62
    牛顿迭代法求方程的根
    统计C语言合法字符
    迭代法求平方根
    欧几里德算法(求两个正整数的最大公约数)
  • 原文地址:https://www.cnblogs.com/chenmo-xpw/p/3938454.html
Copyright © 2011-2022 走看看