title: why can't Countdownlatch in java stops at given latch count?
body: <pre><code>import java.util.concurrent.CountDownLatch;
  import java.util.concurrent.ExecutorService;
  import java.util.concurrent.Executors;
  
  class Processor implements Runnable {
      private CountDownLatch latch;
  
      public Processor(CountDownLatch latch) {
          this.latch = latch;
      }
  
      public void run() {
          System.out.println("Started.");
  
          try {
              Thread.sleep(3000);
          } catch (InterruptedException e) {
              e.printStackTrace();
          }
  
          latch.countDown();
      }
  }
  // -----------------------------------------------------
  
  public class App {
  
      public static void main(String[] args) {
  
          CountDownLatch latch = new CountDownLatch(5); // coundown from 5 to 0
  
          ExecutorService executor = Executors.newFixedThreadPool(2); // 2 Threads in pool
  
          for(int i=0; i &lt; 10; i++) {
              executor.submit(new Processor(latch)); // ref to latch. each time call new Processes latch will count down by 1
          }
  
          try {
              latch.await();  // wait until latch counted down to 0
          } catch (InterruptedException e) {
              e.printStackTrace();
          }
  
          System.out.println("Completed.");
      }
  
  }
  </code></pre>
  
  <p>Output:    </p>
  
  <p>Started
  Started
  Started
  Started
  Started
  Started
  Started
  Completed`
  Started
  Started
  Started</p>
  
  <p>In the above code "Completed" should be printed after 6 times "Started" as latch count downs to 5 - 0, why it is always 7th or 8th time? Have i understood wrong?</p>