一、CyclicBarrier 

  CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。
  CyclicBarrier类似于CountDownLatch也是个计数器, 不同的是CyclicBarrier数的是调用了CyclicBarrier.await()进入等待的线程数, 当线程数达到了CyclicBarrier初始时规定的数目时,所有进入等待状态的线程被唤醒并继续。 CyclicBarrier就象它名字的意思一样,可看成是个障碍, 所有的线程必须到齐后才能一起通过这个障碍。 CyclicBarrier初始时还可带一个Runnable的参数,此Runnable任务在CyclicBarrier的数目达到后,所有其它线程被唤醒前被执行。

A、构造函数       创建一个新的 CyclicBarrier,它将在给定数量的参与者(线程)处于等待状态时启动,但它不会在每个 barrier 上执行预定义的操作。

  public CyclicBarrier(int parties) { this(parties, null);}

demo:

 1 package com.jalja.org.thread;
 2 import java.util.concurrent.CyclicBarrier;
 3 import java.util.concurrent.ExecutorService;
 4 import java.util.concurrent.Executors;
 5 public class LockTest {
 6     public static void main(String [] args){
 7         CyclicBarrier cyclicBarrier = new CyclicBarrier(3);
 8         ExecutorService executorService= Executors.newFixedThreadPool(3);
 9         Runnable threadTest=null;
10         for(int i=0;i<3;i++){
11             threadTest=new ThreadTest(cyclicBarrier);
12             executorService.execute(threadTest);
13         }
14         executorService.shutdown();
15     }
16 }
17 class ThreadTest implements Runnable{
18     private CyclicBarrier cyclicBarrier;
19     public ThreadTest(CyclicBarrier cyclicBarrier){
20         this.cyclicBarrier=cyclicBarrier;
21     }
22     public void run() {
23         try {
24             Thread.sleep((long)(Math.random()*10000));
25             System.out.println(Thread.currentThread().getName()+"开始执行");
26             cyclicBarrier.await();
27         }catch (Exception e){
28             e.printStackTrace();
29         }
30         System.out.println(Thread.currentThread().getName()+"执行结束");
31     }
32 }
View Code

相关文章:

  • 2022-12-23
  • 2021-11-04
  • 2021-12-15
  • 2022-12-23
  • 2021-06-26
  • 2021-07-09
  • 2021-12-25
  • 2022-01-21
猜你喜欢
  • 2021-05-17
  • 2021-08-02
  • 2021-06-19
  • 2021-05-27
  • 2022-02-08
  • 2021-10-01
  • 2021-10-09
相关资源
相似解决方案