Java/Threads/CyclicBarrier

Материал из Java эксперт
Перейти к: навигация, поиск

A thread of execution that uses a CyclicBarrier

   <source lang="java">

  

import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier; class BarDemo {

 public static void main(String args[]) {
   CyclicBarrier cb = new CyclicBarrier(3, new BarAction());
   System.out.println("Starting");
   new MyThread(cb, "A");
   new MyThread(cb, "B");
   new MyThread(cb, "C");
 }

} class MyThread implements Runnable {

 CyclicBarrier cbar;
 String name;
 MyThread(CyclicBarrier c, String n) {
   cbar = c;
   name = n;
   new Thread(this).start();
 }
 public void run() {
   System.out.println(name);
   try {
     cbar.await();
   } catch (BrokenBarrierException exc) {
     System.out.println(exc);
   } catch (InterruptedException exc) {
     System.out.println(exc);
   }
 }

} class BarAction implements Runnable {

 public void run() {
   System.out.println("Barrier Reached!");
 }

} public class MainClass {

 public static void main(String args[]) {
   CyclicBarrier cb = new CyclicBarrier(3, new BarAction());
   System.out.println("Starting");
   new MyThread(cb, "A");
   new MyThread(cb, "B");
   new MyThread(cb, "C");
   new MyThread(cb, "X");
   new MyThread(cb, "Y");
   new MyThread(cb, "Z");
 }

}

</source>