练习题之CyclicBarrier与CountDownLatch

一、CyclicBarrier使用

  new Thread().start();

  new Thread(new Runnable() {},"XXX").start();

public class CyclicBarrierTest {
 
  public static int NUM=10;

  public static void main(String[] args) {
   CyclicBarrier cyc = new CyclicBarrier(10);
   for(int i=0;i<NUM;i++) {
     new Thread(new Runnable() {
          public void run() {
             System.out.println(Thread.currentThread().getName() +":before CyclicBarrier");
             cyc.await();
             System.out.println(Thread.currentThread().getName() +":over CyclicBarrier");
          }
     },Thread.currentThread().getname()).start();
   }
  System.out.println("Test");
  }
}

 输出结果如下:

main:before CyclicBarrier
main:before CyclicBarrier
main:before CyclicBarrier
main:before CyclicBarrier
main:before CyclicBarrier
main:before CyclicBarrier
main:before CyclicBarrier
main:before CyclicBarrier
Test
main:before CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier

二、CountDownLatch使用

public class CountDownTest {
   public static int NUM=10;
  
   public static void main(String[] args) {
      CountDownLatch latch = new CountDownLatch(NUM);
      for(int i =0;i<NUM;i++) {
        new Thread(new Runnable() {
           public void run() {
            System.out.println(Thread.currentThread.getName() + "Before CountDownLatch");
            latch.countDown();
            System.out.println(Thread.currentThread.getName() + "Over CountDownLatch");

            }
        },Thread.currentThread.geName()).start();
      }
      latch.await();
      System.out.println("Test");
   }
}

输出结果如下:

main:Before CountDownLatch
main:Before CountDownLatch
main:Over CountDownLatch
main:Before CountDownLatch
...
Test
原文地址:https://www.cnblogs.com/moonandstar08/p/5400323.html