   public class Barrier
   {
      public Barrier(int participants)
      {
         requiredParticipants = participants;
         arrived = 0;
         confirmed = true;
      }
      private final int requiredParticipants;
      private int arrived;
      private boolean confirmed;
   
      public synchronized boolean waitB(boolean go)
      {
         
         //System.out.println("wait 1 count = " +arrived);
         arrived++;
         if(!go) confirmed = false;
         try
         {
            while(arrived < requiredParticipants) wait();
            //System.out.println("wait 2 count = " +arrived);
            notifyAll();
            
         }
            catch(InterruptedException ie){  confirmed = false; };
         return confirmed;
      }
      
      public void finalize()
      {
        //System.out.println("Barrier finalized");
      }
   }

