| Refresh | Home EGTry.com

a simple example to use CyclicBarrier


CyclicBarrier2Test.java

/*
 * Copyright@ 2011 www.egtry.com
 */

package egtry.thread;

import java.util.Date;
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;

public class CyclicBarrier2Test {

  public static void main(String[] args) throws BrokenBarrierException, InterruptedException {
	  CyclicBarrier barrier=new CyclicBarrier(2);
	  new Thread(new Worker(barrier)).start();
	  barrier.await();
	  System.out.println("Done Cycle 1\n");

	  new Thread(new Worker(barrier)).start();
	  barrier.await();
	  System.out.println("Done Cycle 2");
  }
  
  public static class Worker implements Runnable {
	  private CyclicBarrier barrier;
	  
	  public Worker(CyclicBarrier barrier) {
		  this.barrier=barrier;
	  }
	  
	  @Override
	  public void run() {
		  try {
			  System.out.println("Thread "+Thread.currentThread().getId()+" at: "+new Date());
			  barrier.await();
		  } catch (Exception e) {
			  System.out.println(e.getMessage());
		  }
	  }
	  
	  
  }
}



Output

Thread 8 at: Mon Oct 03 11:04:59 CDT 2011
Done Cycle 1

Thread 9 at: Mon Oct 03 11:04:59 CDT 2011
Done Cycle 2