title: Use cases for Java concurrent utilities
body: <p>I have read Java Concurrency in Practice and this is a great reference, but I would like to see a concise single page summary of the use cases of the java.util.concurrent package.</p>
  
  <p>For instance:</p>
  
  <ul>
  <li>Why use a concurrent collection over a synchronized collection?</li>
  <li>When should the atomic classes be preferred over explicit locking?</li>
  <li>When should Locks be used over synchronization?</li>
  <li>What are the alternatives to wait() and notify(), notifyAll()?</li>
  <li>When should a CompletionService be used?</li>
  </ul>
  
  <p>What are the pros/cons and pitfalls to be aware of?</p>